如何在运行时编译C ++程序并将其链接到DLL中

时间:2012-03-19 09:37:43

标签: c++ dll linker createprocess entry-point

我正在使用CreateProcess来调用cllink来编译并将另一个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 个答案:

答案 0 :(得分:1)

你错过了CRT(C运行时库)。例如,它提供__RTC_Shutdown功能。当您将其链接到时,它会在您DllMain之前开始包装。这也将解决您的第一个链接错误。