我有一个刚刚下载的Visual Studio C ++ 2010 Express和wxWidgets 2.9.1。 wx \ build \ msw下的build文件夹包含VC ++版本6到9(2008)的解决方案文件。
我试图打开最新的解决方案,wx_vc9.sln。它用一堆警告转换了所有项目。当我尝试构建每个项目时都会收到错误:
C:\ Program Files (86)\的MSBuild \ Microsoft.Cpp \ V4.0 \ Microsoft.CppCommon.targets(151,5): 错误MSB6001:无效的命令行 切换“cmd.exe”。路径不是 法律形式。
尝试打开以前版本的解决方案wx_vc8.sln会生成相同的转换警告和相同的构建错误。
我用Google搜索了一些提示,并发现了一个以.dsw文件开头的建议。我打开了wx.dsw,它为每个项目文件生成了一个错误:
d:\的3rdParty \ WX \建立\ MSW \ wx_wxregex.dsp :错误:项目升级失败。
最后,在绝望中,我尝试了nmake /f makefile.vc
,又遇到了另一个错误:
NMAKE:致命错误U1077:'cl': 返回代码'0xc0000135'
有人有任何提示吗?感谢。
答案 0 :(得分:5)
有两种方法可以解决这个问题,首先,如果您更新到更新版本的wxWidgets SVN中继,这是固定的(因此在发布时将在2.9.2中修复)。如果您不想在等待的主干上工作2.9.2那么如果您查找并替换所有.vcxproj文件并替换
> $(INTDIR)$(OUTDIR);%(AdditionalInputs)
带
>%(FULLPATH);%(AdditionalInputs)
它应该编译好。
答案 1 :(得分:4)
供将来参考,请相信我的人,避免所有废话并启动 Visual Studio 2010命令提示符并导航到 [wxwidgets目录] \ build \ msw 然后使用makefile使用以下命令进行编译:
nmake -f makefile.vc BUILD = release MONOLITHIC = 0 SHARED = 0 UNICODE = 1
当然可以根据需要更改选项。 你会以这种方式省去很多麻烦,这就是我的方式。
答案 2 :(得分:1)
使用Visual C ++ 2010 Express和wxWidgets 2.9.3进行编译的关键是一次又一次地按F7 ....直到你得到' 0失败'消息如下。由于许多项目具有不立即满足的依赖关系,因此有必要继续使用' F7'直到所有人都满意为止。
下载wxWidgets。我下载了.7-Zip文件(只有12 MB!),并将其安装在C:\ wxWidgets结构应该是这样你可以看到以下文件夹,如C:\ wxWidgets \ lib和C:\ wxWidgets \ build等等...
基本上,该过程应该转到C:\ wxWidgets \ build \ msw,并打开VC-2008的wx_vc9解决方案文件,并在询问时将其转换为VC-2010。然后选择DLL-Release Win32'在顶部,然后按F7。等待编译发生并查看消息。然后一次又一次地按F7直到你得到“0失败”#39;消息如下。然后你想要编译DLL-Debug'以同样的方式发布。
然后可以在C:\ wxWidgets \ lib \ _vc_dll找到已编译的DLL文件。现在,要将vc_dll文件夹添加到PATH,右键单击我的电脑 - >属性 - >高级系统设置 - >环境变量 - >用户变量。搜索'路径' - > '编辑',然后Just Append; C:\ wxWidgets \ lib \ vc_dll到结尾。
这使得运行已编译的应用程序变得更容易,因为您的.EXE现在可以轻松找到DLL。 当你打包时,你显然需要捆绑特定的Release-DLL' S.
然后您可以编译位于C:\ wxWidgets \ samples的Samples。 我只是去单独的项目文件夹,例如C:\ wxWidgets \ samples \ drawing,打开drawing_vc9项目,然后将其转换为提示,然后按F7创建发布版本。现在,如果你进入C:\ wxWidgets \ samples \ drawing \ vc_mswudll \ Folder,你就得到了你的' drawing.exe'准备好了!
玩得开心!
答案 3 :(得分:0)
使用wx.dsw,花了我一段时间才最终得到它,但之后它会很好。我还建议使用其中一个示例项目,例如'minimal'作为基础,并修复所有配置路径以匹配您要构建的内容(手动设置我遇到的问题)。
如果你已经使用了wx_vc9(就像你说的那样),你可能最好只删除所有wx并重新启动它并使用wx.dsw,如上所述。