Код: Выделить всё
#include "pch.h"
#include
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
extern "C" __declspec(dllexport)
int WINAPI xlAutoOpen(void)
{
#ifdef _WIN64
MessageBoxW(nullptr, L"64-bit XLL loaded!", L"Test.XLL", MB_OK);
#else
MessageBoxW(nullptr, L"32-bit XLL loaded!", L"Test.XLL", MB_OK);
#endif
return 1;
}
Release-Win32
C/C++ — Общие — Дополнительные каталоги включения
- C:\2013 Ресурсы для разработчиков систем Office\Excel2013XLLSDK\INCLUDE;
- C:\2013 Office System Developer Resources\Excel2013XLLSDK\SRC;
- C:\2013 Office System Developer Resources\Excel2013XLLSDK\SAMPLES\FRAMEWRK
- C:\2013 Office System Developer Resources\Excel2013XLLSDK\LIB;
- XLCALL32.lib
Посмотрев с помощью dumpbin/headers test.xll, я вижу, что он 32-битный.
Я открываю 32-битную версию Excel.
При выборе test.xll в надстройках Excel я всегда получаю сообщение об ошибке
test.xll не является допустимой надстройкой
Когда я компилирую XLL для x64 (с 64-разрядной версией xlcal32.lib) и делаю то же самое с 64-разрядной версией Excel, все работает.
Любая помощь приветствуется!
Подробнее здесь: https://stackoverflow.com/questions/798 ... 32-bit-xll
Мобильная версия