起因
我想学习如何使用C++开发Windows桌面程序,微软给出了一个远古但似乎很好用的MFC,但显然这个东西不是那么好用。MFC的窗口都是直接放在资源文件中的,显而易见的,我可以把它拖进Resource Hacker肆意地修改它的界面。如果我哪天想要靠这个恰饭,肯定是不现实的,毕竟连氪金界面都能被修改,这验证了我们团队的开发者给我讲的那句“MFC = 没饭吃”
于是我看向了第三方的库:Qt太大了,而且很明显官方没有直接提供静态库,自己编译如此一个庞然大物,这怎么受得了,而且我C++技术也不是很好,Qt肯定看不懂,于是我用上了wxWidgets
环境
Visual Studio 2019 Windows 桌面程序,Release x64
源码使用wxWidgets实例中的Minimal.cpp
不使用wxWidgets官方下载下来的源码手动编译,取而代之的是微软的vcpkg,毕竟这玩意儿省事
vcpkg在VS中选择使用静态库

寻找资料
我跟这个该死的静态链接器殊死搏斗了几个星期。
在谷歌上各种找,面向CSDN的编程在这里完全不起作用。无奈,看看wxWidgets的官方论坛。
意外发现相同问题的帖子:Visual Studio 2019 issue with static linking - wxWidgets Discussion Forum
挨个解决遇到的问题
LNK2038
予观夫VS盛状,在错误列表一栏,衔ERROR,吞WARN,浩浩汤汤,横无际涯.......
1 2 3 | 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(wx.obj 中) wx F:\vs\wx\wx\wxmsw31u_core.lib(checkbox.cpp.obj) 1 |
遇到一大堆上面这种问题
右键项目-属性-C/C++-代码生成,在右边选择运行库
如下图所示。
选择不带DLL的选择,以使用静态的wxWidgets

LNK2001
无法解析的外部符号,巴拉巴拉巴拉一大堆

按照上文提到的那个帖子,需要引入一些库。
这里我选择编译的是x86,所以添加以下代码以引入缺少的库
1 2 | #pragma comment (lib, "comctl32") #pragma comment (lib, "Rpcrt4") |
问题解决
到这里,问题应该就解决掉了,如果没有解决掉就在这篇笔记下面留言告诉我情况。
哈哈哈哈缠了我几个星期的问题终于解决了乐死我了
(这张软盘太逊了,这种小问题折腾几个星期才搞明白
发表回复