|
@@ -11,4 +11,30 @@ error LNK2005: _DllMain@12
|
|
|
> Searching D:\vs2008\VC\atlmfc\lib\mfcs90ud.lib:
|
|
|
|
|
|
由此可以看出,默认情况下,先链接了CRT库MSVCRTD.lib,然后链接的是MFC的库mfcs90ud.lib,因此,需要强制改变一下它们的链接顺序。
|
|
|
- 选择“项目 -> 属性 -> 链接器 -> 输入”栏,在其中的“忽略特定的库”这一栏输入:MSVCRTD.lib mfcs90ud.lib, 然后,在“附加库”这一栏中输入: mfcs90ud.lib MSVCRTD.lib 问题即可解决。
|
|
|
+ 选择“项目 -> 属性 -> 链接器 -> 输入”栏,在其中的“忽略特定的库”这一栏输入:MSVCRTD.lib mfcs90ud.lib, 然后,在“附加库”这一栏中输入: mfcs90ud.lib MSVCRTD.lib 问题即可解决。
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+【错误信息】
|
|
|
+protobuf默认VS编译出来的是dll动态库,而本项目中WxAdoInterface本身也是dll,WxAdoInterface调用protobuf,WxAdoInterface由WxService调用。
|
|
|
+整个项目编译期间没有出任何问题,运行时报错:std::call_once被调用二次,导致google::protobuf::FatalException。
|
|
|
+
|
|
|
+
|
|
|
+【分析原因】:
|
|
|
+std::call_once被调用二次,说明有函数被执行二次,导致google::protobuf::FatalException。
|
|
|
+可能原因是:WxService调用了一次protobuf初始化环境,而WxService再次调用WxAdoInterface又被初始化了一次。
|
|
|
+
|
|
|
+【解决方法】:
|
|
|
+将protobuf由dll改成lib方式链接.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|