【发布时间】:2010-12-27 16:31:21
【问题描述】:
我正在尝试将 WinMain 函数隐藏在 DLL 中,以避免一遍又一遍地再次输入大量代码。
我从 DLL 中导出 wWinMain,将其声明为
extern "C" int WINAPI wWinMain( ... )
{
// repetitive code here
}
并使用了链接器选项/EXPORT:wWinMain,但是当我尝试在另一个项目中使用导入库时出现错误
LIBCMTD.lib(wincrt0.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function __tmainCRTStartup
备注我确实想使用 GUI 界面,我知道这是定义 main 而不是 WinMain 函数时的常见错误。另外,我在两个项目中都启用了 UNICODE 支持。我该怎么办?
【问题讨论】:
-
也许我在这里遗漏了一些非常简单的东西,但在我看来你有一个命名问题。您导出的函数的名称为
wWinMain,启动代码正在寻找一个名为WinMain的符号。解决该问题的另一种方法是在主程序中创建一个标准的WinMain函数,它只调用DLL 中的wWinMain函数。 -
为什么要将 wWinMain 放在 DLL 中?这真的没有意义。如果它是供 DLL 使用的,则不应将其称为 wWinMain 或将其导出。如果它是给调用者的,......调用者调用 WinMain 已经太晚了,如果你想让他们把这个函数作为某种插入入口点调用,你应该调用它
MyMain,而不是已经存在的东西由标准 Windows 开发保留。
标签: winapi linker-errors dllexport winmain