int main(int,char**) {}
在我的CMakeLists.txt中,我调用了find_package(SDL)和find_package(GLEW). CMake-part运行良好,所以我刚刚打开了vs10-solution-file并尝试编译,当我得到LNK2019时:
error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup
这意味着我选择了错误的子系统,不是吗?但是,如果我只是将子系统从CONSOLE切换到WINDOWS并返回,则问题仍然存在. CMake为此设置了隐藏选项吗?如何在vs10中编译我的简单程序?
解决方法
如果你只是做一个直接的add_executable()命令,你将得到/ SUBSYstem:CONSOLE / ENTRY:“mainCRTStartup”被传递给链接器.
如果你执行add_executable(exename WIN32 …),你将获得/ SUBSYstem:WINDOWS.
Gaah!这两种选择都让我们中途到了!
我浏览了CMake随附的.cmake文件(fwiw,我正在使用CMake 2.8.10和Visual Studio 2012 Express),并发现似乎控制/ SUBSYstem和/ ENTRY标志的变量称为CMAKE_CREATE_WIN32_EXE.因此,要设置这两个部分,我们只需要更改该变量.这就是我最终得到的结果:
if(MSVC) set(CMAKE_CREATE_WIN32_EXE "/SUBSYstem:WINDOWS /ENTRY:\"mainCRTStartup\"") endif(MSVC)
希望能帮助别人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。