Я просто пытаюсь создать простую DLL с одной экспортированной функцией с помощью VC++ (VS2015) и вызывать эту функцию из приложения Win32. Я тестирую построение dll и exe в конфигурациях сборки x86 и x64.vC++ 64-bit dll неправильные размеры параметров
Все работает так, как ожидалось, при компиляции как x86, однако, когда я компилирую как x64 и вступаю в вызов функции dll, параметры функции - это все данные мусора.
У меня есть функция, определенная следующим образом в заголовочном файле, который включен как в 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;
}
Так вызывается функция в приложении:
CallDll(12345, true);
Изменение параграфа метр от LONG64 до чего-то типа int не имеет значения. Я не сомневаюсь, что это глупая ошибка, но я вытаскиваю свои волосы, пытаясь понять это.
Весь образец проекта: https://1drv.ms/u/s!AiwVLuwdzWP_zZ0tSDA15ZqL9QgKXQ
Пожалуйста обеспечивают [mcve] (http://stackoverflow.com/help/mcve) – NineBerry
Добавлен весь mcve проект – user7101086
Он работал хорошо для меня после того, как я изменил включать путь, чтобы найти header.h Это было одурачить меня изначально изменив свойства для другой конфигурации сборки, которая была фактически построена (платформа была неправильной, я создавал x64 и менял Win32. –