0

VS2005 では、_cdecl 呼び出し規約を使用していましたが、プロジェクトはリンカー エラーなしでビルドされます。プロジェクトを VS2008 に移植する際に呼び出し規約を _stdcall に変更すると、次のエラーが発生します。

エラー LNK2001: 未解決の外部シンボル __imp__GCBOpen@8。

[構成設定] > [C\C++] > [一般] > [共通言語ランタイム サポート] が [共通言語ランタイム サポートなし] に設定されています。

問題を解決するために必要なプロジェクトの設定やコードの変更についてサポートが必要です。どんな助けでも大歓迎です。

4

1 に答える 1

2

GCBOpen()コンパイルされているように見えます__cdeclが、その宣言はそれを明示的に述べていません。(そのため、デフォルトでは問題なくリンクできまし__cdeclたが、変更すると壊れます。) 一般に、外部ライブラリでの関数の宣言では、呼び出し規約を指定して、遭遇したような問題を回避することをお勧めします。

どこかに次のようなものが必要です。

__declspec(dllimport)
extern int GCBOpen(int, int);

次のようにするとよいでしょう:

#define CALLCONV __cdecl
__declspec(dllimport)
extern int CALLCONV GCBOpen(int, int);
于 2010-08-09T20:20:32.617 に答える