Динамическая загрузка DLL внутри другой DLL - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь преобразовать функциональность нашего старого кода в 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, не возникает ошибка, и я могу использовать его просто отлично.

Есть идеи, откуда возникла моя проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...