Создать 32-битный XLLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создать 32-битный XLL

Сообщение Anonymous »

У меня есть очень простая тестовая программа для создания XLL:

Код: Выделить всё

#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;
}
Мои настройки в Visual Studio 2019 следующие:
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
Linker — Общие — Дополнительные каталоги библиотек:
  • C:\2013 Office System Developer Resources\Excel2013XLLSDK\LIB;
Компоновщик — ввод — дополнительные зависимости:
  • XLCALL32.lib
Решение компилируется нормально, и создается test.dll, который я переименовываю в test.xll.

Посмотрев с помощью 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»