2

古い Borland コンパイラから VisualStudio 2008 に C++ プロジェクトを移植しています。このプロジェクトは、ソース コードを持っていないサード パーティの DLL を使用しているため、再コンパイルまたは変更できません。DLL のヘッダー ファイルは、次の行に沿って関数を定義します。

extern "C" {
void __stdcall Init(int a, int b);
}

しかし、この DLL にリンクしようとすると、VisualStudio は関数 _Init@8 が見つからないと言います。DLL を見ると、関数名が _Init@8 ではなく _Init であることがわかります (Microsoft が stdcall 名マングリングに @8 を追加する前に DLL が作成されたようです)。

私の質問は: この DLL で関数を呼び出すにはどうすればよいですか? VisualStudio は単にこれらの古い DLL をサポートしていないのでしょうか、それともフラグや設定が欠けているのでしょうか。(LoadLibrary/GetProcAddress 関数を使用して、実行時に関数を動的に呼び出すことができることは承知していますが、そうしないほうがよいと思います。)

4

1 に答える 1

0

32 ビットまたは 64 ビットのコーディングを行っているかどうかを教えてくれるものは何もありませんでした。MSDN には、ソースのない dll に基づいてインポート ライブラリを作成する方法に関する情報があります。この記事は、32 ビットのインポート ライブラリを作成するためのものです。乾杯!

于 2013-01-21T11:41:26.180 に答える