VC++(VS2015)を使用してエクスポートされた単一の関数を使用して単純なDLLを作成し、この関数をWin32アプリケーションから呼び出しようとしています。私はx86とx64のビルド構成でdllとexeの両方をビルドすることをテストしています。vC++ 64ビットdllのパラメータサイズが正しくありません
x64としてコンパイルしてdll関数呼び出しに入ると、関数パラメータはすべてガベージデータです。
#ifdef CPPDLL_EXPORTS
#define CPPDLL_API __declspec(dllexport)
#else
#define CPPDLL_API __declspec(dllimport)
#endif
extern "C" CPPDLL_API void __cdecl CallDll(LONG64 value, bool trueOrFalse);
関数はDLLに実装され、この方法:
extern "C" CPPDLL_API void __cdecl CallDll(LONG64 value, bool trueOrFalse)
{
return;
}
IはDLLとアプリケーション・プロジェクトの両方に含まれているヘッダファイルに次のように関数が定義されています
これは、アプリケーションで関数が呼び出される方法です。
CallDll(12345, true);
paraを変更するLONG64からintのようなものには何の違いもありません。私は愚かな間違いであることは間違いないが、私はそれを理解しようとしている私の髪を引き出している。
全体のサンプルプロジェクト: https://1drv.ms/u/s!AiwVLuwdzWP_zZ0tSDA15ZqL9QgKXQ
[MCVE](http://stackoverflow.com/help/mcve) – NineBerry
を追加しました全体MCVEプロジェクト – user7101086
私はそれが最初に私をだますでしたHEADER.H を見つけるために、パスを含める変更した後、それは私のためにうまく働いを提供してください。実際にビルドされていた別のビルド構成のプロパティを変更することで(プラットフォームが間違っていて、x64をビルドしていて、Win32を変更していました) –