Я пытаюсь загрузить DLL динамически, используя LoadLibrary()
, который работает, однако я не могу получить адрес функции в DLL, которую я пытаюсь вызвать.Почему я не могу получить доступ к моей DLL-функции
DLL функции: (в CPP файле)
_declspec(dllexport) void MyDllFunc()
{
printf("Hello from DLL");
}
телефонный код:
typedef void (*MyDllFuncPtr)();
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE LoadMe;
LPCWSTR str = L"C:\\Users\\Tony\\Documents\\Visual Studio 2008\\Projects\\DLL Loading\\Release\\MyDll.dll";
LoadMe = LoadLibrary(str);
if(LoadMe != 0)
printf("Successfully Loaded!\r\n");
else
printf("Loading Failed \r\n");
MyDllFuncPtr func;
func = (MyDllFuncPtr)GetProcAddress(LoadMe, "MyDllFunc");
if (func != NULL)
func();
FreeLibrary(LoadMe);
}
возвращает NULL FUNC !!!
Что я делаю неправильно?
Это проект консоли Win32.
Если вы dll написано на языке C++, вам нужно совместить манекен на языке C++. Просмотрите таблицу экспорта и посмотрите имя функции. Или объявите функцию в dll как extern C, которая удаляет mangeling имени C++. –