2012-03-27 5 views
1

일부 응용 프로그램을 다른 사용자로 실행하는 작은 응용 프로그램을 만들기 위해 저는 C로 작성하고 MinGW GCC 컴파일러를 사용하여 컴파일하고 링크했습니다. 내 문제는 내가 CreateProcessWithLogonW() WINAPI 함수를 사용하려고 할 때마다 "CreateProcessWithLogonW()에 대한 정의되지 않은 참조"라는 오류가 발생한다는 것입니다.CreateProcessWithLogonW에 대한 정의되지 않은 참조

이 지금처럼 내가 그것을 컴파일 할 때 나는 Advapi32를 연결 있다는 사실에도 불구하고,

gcc file.c -lAdvApi32 -o filename 
+0

그냥 추측합니다. 명령의 끝에'-lAdvApi32'를 넣으십시오. 'gcc -o filename file.c -lAdvApi32' –

+0

제안 해 주셔서 감사합니다. 그러나이 방법은 컴파일 방법을 변경하지 않은 것처럼 보이므로 계속 오류가 발생합니다. – Betlander

+1

@Betlander'-Wall' 컴파일러 플래그를 사용하는 것이 좋습니다. 이것은 암시 적 선언에 대해 경고 할 것이기 때문에 - 실제로 밝혀진 바와 같이 - 당신이 가진 진짜 문제였습니다. – Anthales

답변

2

완전히 다른 의미가 있습니다 즉

#include <windows.h> 

이 Anthales이 작품을 제안 솔루션, 그것은 확장되지 않지만에게 잘.

+1

아, 그래서 그것은 정말로 양립 할 수없는 암시적인 선언이었고 링커 문제는 아닙니다. 나는 마지막에 대해서만 생각했다. – Anthales

+0

그래, 그런 종류의 오류는 정말 까다로울 수 있습니다. – AgentLiquid

0

과 같이, 직접 문제의 DLL로 연결 시도 :

GCC 파일을 .c % windir % \ system32 \ advapi32.dll -o 파일 이름

-lAdvApi32 스위치를 대신 사용하면 MinGW/lib의 libadvapi32.a와 연결됩니다. 슬프게도, 왜 이것이 작동하지 않을지 나는 대답 할 수 없다. 어쩌면이 LIB는 오래된, 또는 올바른 해결책은 실제로 올바른 mingw32 헤더 #include를하는 것입니다

+0

정말 고마워, 완벽하게 작동했습니다. – Betlander

관련 문제