我有一个通过visual studio构建和链接的项目,但不是我们的构建系统。
据我所知,如果定义了UNICODE,tchar.h包含一个将_tmain转换为wmain的宏。我检查了预处理器输出,确实_tmain已被wmain替换。然后包含wmain的文件编译得很好,但链接器抱怨main未定义。
LNK2019:函数__tmainCRTStartup中引用的未解析的外部符号main
wmain是否由另一组我没有正确包含的宏(通过缺少-D选项等)转换为main,或者是否有一个指定入口点的link.exe特殊标志。
谢谢。
手动指定/输入:mainCRTStartup修复它。
编辑: 我刚检查了main.obj文件。 wmain是明确定义的。
答案 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()
的实现留给您。