2011-07-06 23 views
0

g ++コンパイル済みテストクライアントをVisual Studio 2008でコンパイルされたDLLにリンクしています。次のエラーメッセージが表示されます。g ++定義されていないエラーへの参照

client2.o:client2.c:(.text+0x11): undefined reference to `ICD_Create(char*)@4' 
client2.o:client2.c:(.text+0x3e): undefined reference to `ICD_Remove()@0' 
client2.o:client2.c:(.text+0x88): undefined reference to `ICD_Open(unsigned int, unsigned int, char, unsigned int, unsigned int)@20' 
client2.o:client2.c:(.text+0xae): undefined reference to `ICD_Close()@0' 
client2.o:client2.c:(.text+0xf7): undefined reference to `ICD_Command(char const*)@4' 
client2.o:client2.c:(.text+0x11d): undefined reference to `ICD_Synchronize()@0' 
collect2: ld returned 1 exit status 

g ++とビジュアルスタジオライブラリの間に矛盾がありますか?誤ったDLLインターフェイスを使用していますか?

更新:

グラム++コマンドであるG ++ -o client2.out client2.0 I-cut_driver.dll一般に

+0

このエラーにつながるGCCコマンドを含めることはできますか? – Foon

+0

これはC、C++、またはその両方ですか?あなたの宣言に 'extern" C "'がありませんか? –

+0

私は関数宣言(私は__stdcallへのマクロと思われる)でWINAPIを使用しています。これは、Visual Studio DLLが使用する規約ですか? – Peretz

答えて

0

、C++異なるC++コンパイラで生成されたコードがリンク互換性がありません。 g++とVisualStudioで構築されたC++コードはほとんど確かにありません。

+0

@Banthar、@Employed:ありがとうございます。だから、私はこれらのすべてのDLL設定と混乱しています。 COM DLL、.NET DLL、標準DLL、MFC DLL、特定のC++実装があることがわかります。 .NETとCOMは連携して動作することができ、標準はいくつかのものから呼び出すことができます。しかし、何が何と結びついているのかを知るための経験則、あるいは一般的な計画がありますか? – Peretz

関連する問題