Eclipse + MSCV + WxWidgets

时间:2014-11-13 15:18:06

标签: eclipse visual-studio-2010 visual-c++ wxwidgets

我尝试使用WxWidgets支持为Eclipse中的Microsoft Visual C ++编译器设置工作工具链。

到目前为止我所做的是:

  • 使用VS2010的分布式Visual Studio .sln编译WxWidgets(我认为Eclipse使用相同的编译器等。)

  • 确认Eclipse工具链正常工作(标准Hello World项目)

  • 创建WxWidgets测试应用程序(Zetcode Tutorial)

  • 使用适当的包含路径,库路径,预处理器宏(_WXDEBUG__)配置Eclipse工具链 WIN32 _视窗 wxUSE_GUI = 1 _UNICODE UNICODE _DEBUG _WIN32_WINNT = 0x0502 _WXMSW__ _WIN32)并根据调试或发布版本将代码生成设置为/ MT或/ MTd。

  • 我指定了其他库(wxmsw30ud_core.lib wsock32.lib WINMM.LIB comctl32.lib rpcrt4.lib wxexpatd.lib wxjpegd.lib wxpngd.lib wxregexud.lib wxscintillad.lib wxtiffd.lib wxzlibd.lib Version.lib opengl32.lib glu32.lib KERNEL32.LIB USER32.LIB GDI32.LIB winspool.lib comdlg32.lib advapi32.lib SHELL32.LIB ole32.lib oleaut32.lib UUID.LIB odbc32.lib odbccp32.lib)根据this guide

现在我最终在msvcrtd.lib和msvcprtd.lib上遇到链接器错误(LNK2005)。

例如:

msvcprtd.lib(MSVCP100D.dll):错误LNK2005:" void __cdecl std :: _ Xlength_error(char const *)" (?_Xlength_error @std @@ YAXPBD @ Z)在libcpmtd.lib(xthrow.obj)definiert中是有害的。

我知道"将代码生成设置更改为/ MTd"修复,但我已经使用了该设置,并检查了WxWidgets构建配置以指定静态库,unicode构建。

所以有人知道链接器为什么会出现这个错误吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

wxWidgets构建中的“静态”意味着wxWidgets构建为静态库而不是DLL。它默认仍然使用CRT DLL。如果使用项目文件,则需要多选其中的所有项目并更改相应的选项。或者,您可以使用nmake从命令行构建,然后按照here的说明指定RUNTIME_LIBS=static就足够了。