2012-03-27 23 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

は、正しい解決策は、実際には正しいMINGW32ヘッダを#includeすることですしている。すなわち

#include <windows.h> 

Anthalesが作品を提案された解決策は、それがスケールしませんが、よく

+1

ああ、実際には互換性のない暗黙の宣言であって、リンカーの問題ではありませんでした。私は最後のことしか考えなかった。 – Anthales

+0

うわー、これらの種類のエラーは本当に難しいことがあります。 – AgentLiquid

0

そうのように、直接問題のDLLとリンクしてみてください。

gccのファイルを.c%windir%\ system32 \ advapi32.dll -oファイル名

代わりにスイッチ-lAdvApi32を使用すると、MinGW/libのlibadvapi32.aにリンクされます。悲しいことに、なぜこれがうまくいかないのか答えることはできません。多分このlibには古くなっている、または完全に異なる意味

+0

ありがとう、完璧に働いた。 – Betlander