Не могу найти точку входа DLL

Я пытался вызвать функцию DLL в моем проекте VBA, но я получаю это сообщение об ошибке:

Run-time error '453': Can't find DLL entry point "CheckStatus" in "Power.dll"

Вот определение для DLL в файле C++:

#define CLASS_DECLSPEC extern "C" __declspec(dllexport)

CLASS_DECLSPEC int __stdcall CheckStatus();

И вот как я пытаюсь объявить это и назвать это в VBA:

Public Declare Function CheckStatus Lib "Power.DLL" () As Long

Dim test As Long
test = CheckStatus

И тогда, когда я запускаю, он получил вышеупомянутое сообщение об ошибке.

Кто-нибудь знает, как это исправить? Благодарю.

2 ответа

Решение

Используя эту статью MSDN, я бы попробовал этот метод объявления функции:

Public Declare Function CheckStatus Lib "Power.DLL" Alias "_CheckStatus@0" () As Long

Это связано с искажением имени (даже с extern "C").
Посмотрите, что на самом деле экспорт в DLL, предположение будет либо _CheckStatus или же _CheckStatus@0,
Чтобы заставить имя быть как есть, сделайте .def файл в вашем проекте с содержанием:

EXPORTS
    CheckStatus=CheckStatus
Другие вопросы по тегам