Как скомпилировать и связать программу C ++ в DLL во время выполнения - PullRequest
0 голосов
/ 19 марта 2012

Я использую CreateProcess для вызова cl и link для компиляции и связывания другой программы C ++ (TestProg.cxx) в DLL.

TestProg.cxx содержит следующую функцию DllMain:

extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}

и я добавил /Entry:DllMain к параметрам ссылки.

Я получаю следующие ошибки связи:

LINK : error LNK2001: unresolved external symbol _DllMain

main.obj : error LNK2001: unresolved external symbol __RTC_Shutdown

main.obj : error LNK2001: unresolved external symbol __RTC_InitBase

main.dll : fatal error LNK1120: 3 unresolved externals

Не могли бы вы дать мне знать, как это исправить? Спасибо

1 Ответ

1 голос
/ 19 марта 2012

Вам не хватает CRT (библиотека времени выполнения C).Например, он обеспечивает функцию __RTC_Shutdown.Когда вы связываете его, он запускается до вашего DllMain, оборачивая егоЭто также решит вашу первую ошибку ссылки.

...