如何告诉link.exe使用wmain作为入口点。 LNK2019:函数__tmainCRTStartup中引用的未解析外部符号main

时间:2012-01-06 21:18:54

标签: c++ windows linker

我有一个通过visual studio构建和链接的项目,但不是我们的构建系统。

据我所知,如果定义了UNICODE,tchar.h包含一个将_tmain转换为wmain的宏。我检查了预处理器输出,确实_tmain已被wmain替​​换。然后包含wmain的文件编译得很好,但链接器抱怨main未定义。

LNK2019:函数__tmainCRTStartup中引用的未解析的外部符号main

wmain是否由另一组我没有正确包含的宏(通过缺少-D选项等)转换为main,或者是否有一个指定入口点的link.exe特殊标志。

谢谢。

手动指定/输入:mainCRTStartup修复它。

编辑: 我刚检查了main.obj文件。 wmain是明确定义的。

1 个答案:

答案 0 :(得分:-1)

MSVC使用特殊的运行时启动,即调用预期的入口点wmain()WinMain()等。

这些名字绝对没什么神奇之处。如果您没有MSVC启动源代码,请实现您自己的启动模块以满足您的需求:

int main (int argc, char **argv, char **envp)
{
    wchar_t **w_argv =  some_conversion_function (argc, argv);
    wchar_t **w_envp =  some_conversion_function (some_count_function (envp), envp);
    return wmain (argc, w_argv, w_envp);
}

我将some_conversion_function()some_count_function()的实现留给您。