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

我有一个项目,通过Visual Studiobuild立和链接,但不是由我们的构build系统。

从我可以告诉,tchar.h包含一个macros来将_tmain转换成wmain,如果UNICODE被定义。 我检查了预处理器的输出,实际上_tmain已经被wmain替​​换了。 包含wmain的文件然后编译就好了,但是链接器抱怨main是未定义的。

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

wmain是否被另一组macros指定为main,我没有正确包含(通过缺less-D选项等),还是有一个指定入口点的link.exe特殊标志。

谢谢。

手动指定/ entry:mainCRTStartup修复它。

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

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()的实现some_conversion_function()你。