Я устал создавать файл DLL в блоках кода, а затем использовать его в моей презентации PowerPoint. В файле DLL, как я уже упоминал ниже, аргумент функции содержит (LPCSTR)
void DLL_EXPORT SomeFunction(const LPCSTR sometext)
{
MessageBoxA(0, sometext, " DLL Message ", MB_OK | MB_ICONINFORMATION);
}
В моем файле PowerPoint у меня есть
Declare Function DLL_EXPORT _
Lib "myfile.dll" _
Alias "SomeFunction" (???)
и когда я запускаю файл, я получаю
Потому что я не знаю, как определить аргумент моей функции в powerpoint. Я имею в виду эту часть кода:
Alias "SomeFunction" (???)
Ваш код C ++ использует неправильное соглашение о вызовах. Так должно быть:
__declspec(dllexport) void __stdcall SomeFunction(const char* sometext)
Вы можете использовать макросы как DLL_EXPORT
, APIENTRY
, LPCSTR
и т.д., если хотите. Однако, по крайней мере, до тех пор, пока вы не поймете, что все эти макросы означают, вероятно, будет проще быть явным, как я покажу выше.
Правильное объявление VBA для вашей функции:
Declare Sub SomeFunction Lib "myfile.dll" (ByVal sometext As String)
Однако одного этого недостаточно, потому что ваша функция будет зависеть от оформления имени и искажения. Вы можете использовать dumpbin или Dependency Walker для просмотра фактического имени, по которому экспортируется ваша функция. Тогда ваше объявление VBA нужно будет изменить так:
Declare Sub SomeFunction Lib "myfile.dll" Alias "<DecoratedNameHere>" (ByVal sometext As String)
Других решений пока нет …