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

标签 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

你能告诉我如何修复它吗?谢谢

最佳答案

您缺少 CRT(C 运行时库)。例如,它提供了 __RTC_Shutdown 函数。当您链接它时,它通过包装在您的 DllMain 之前启动。这也将解决您的第一个链接错误。

关于c++ - 如何在运行时将 C++ 程序编译并链接到 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767840/

相关文章:

c++ - 类方法子集的编译时生成

c - 编译动态库时消除对 MinGW 特定 DLL 的依赖

c# - 如何使用 Reflection.Emit 添加引用

c++ - 帮助在 gcc 中链接

C++ 链接器 - 缺少重复符号

c++11 vs c++ - 枚举差异

c++ - cin double 和没有空格的字符串导致错误

c++ - 在 C++ 中将结构类型转换为整数,反之亦然

java - 包含 native DLL 的 ANT Java-Jar 任务

c++ - 错误 LNK2019 : unresolved external symbol "public: __thiscall user::user(void)" (? ?0user@@QAE@XZ) 在函数 "..."中引用