Я пытаюсь преобразовать функциональность нашего старого кода в DLL.
Одна из функций хочет экспортировать из нашего старого кода использовать динамически связанную DLL (которую я назову other
)
std::wstring otherDLL = L"C:\\PATH\\TO\\OTHER\\DLL"
if (!(libOther = LoadLibraryW(otherDLL.c_str()))){
return;
}
В нашем старом коде эта часть Код работает просто отлично.
Поэтому я добавил в мою новую DLL следующий код:
extern "C++" std::wstring test_load(void){
std::wstring otherDLL = L"C:\\PATH\\TO\\OTHER\\DLL"
if (!(libOther = LoadLibraryW(otherDLL.c_str()))){
return L"Not Loaded";
}
return L"Loaded";
}
(эта функция не запускается во время DLLMain). Если я пытаюсь запустить test_load из моей DLL в другом exe
#include "MyNewDLL.h"
int main()
{
std::wcout << test_load();
}
, я получаю следующую ошибку
Необработанное исключение в 0x7BDE20f3 (ucrtbased.dll) в Test.exe: 0xC00000005: Место чтения нарушения доступа 0x00000000
Странно, что если я пытаюсь загрузить OtherDLL с основного, который не находится внутри MyNewDLL, не возникает ошибка, и я могу использовать его просто отлично.
Есть идеи, откуда возникла моя проблема?