如何在Visual Studio 2013中重新编译.lib

时间:2015-01-12 04:18:18

标签: c++ directx

我有一个使用Effects11.lib和Effects11d.lib的项目但是当我构建我的项目时,我得到了一堆"错误LNK2038:检测到不匹配' __ MSC_VER':值&#39 ; 1600'不匹配价值' 1800'"。根据我的发现,这就是说.lib是为不同版本的VS构建的,而不是我正在使用的,我需要重新编译它们。问题是我不知道该怎么做。从来没有必要重新编译lib。

3 个答案:

答案 0 :(得分:1)

通过作者网站查看本书@ http://www.d3dcoder.net/d3d11.htm,看起来Effects11.lib是Ms-Pl许可源代码。

http://msdn.microsoft.com/en-us/library/windows/desktop/ff728664(v=vs.85).aspx

然后链接到

https://fx11.codeplex.com/

下载了该库的源代码

https://fx11.codeplex.com/releases/view/150822

似乎有可以使用VS2013构建的项目文件,因此您应该能够为vs2013构建effects.lib并继续开发。

另外,您可以通过他的网页联系作者本人,看看他是否可以为您做这个并链接到它,因为您可能不是唯一一个遇到此问题的人?

答案 1 :(得分:0)

要重新编译.lib文件,首先必须拥有源代码。然后打开库项目的vcproject,然后更改设置,然后重新编译。我还在网上发现,对于某些类型的c ++,为了让它重新编译,你必须删除库目录中生成的.o文件。但是,我不知道这是否适用于您的编译器。我希望这能回答你的问题。

答案 2 :(得分:0)

这些静态库是使用VS 2010构建的,但您使用的是VS 2013.链接错误告诉您。

此案例中的修复是访问CodePlex上的Effects 11网站,然后使用VS 2013编译器构建效果11的新副本。或者,您可以使用与VS 2013相同的NuGet包fx11_desktop_2013

请注意,当您使用包含带有稍微过时的Luna书的Windows 8.1 SDK的VS 2013时,您可能正在尝试使用已弃用的D3DX11库。你当然可以使用VS 2013做到这一点,但你必须对项目include / lib路径进行一些调整才能使它工作。见MSDN来自CodePlex或NuGet的Effects 11库版本在旧版DirectX SDK上完全没有依赖关系。

我也有关于该书的一般性说明here

有关D3DX11替代品的完整列表,请参阅Living without D3DX