2015-01-12 71 views
0

我有一个项目使用Effects11.lib和Effects11d.lib,但是当我构建我的项目时,我得到一堆“错误LNK2038:检测到'__MSC_VER'错误:value' 1600'不匹配值'1800'“。从我发现的情况来看,这就是说.lib是为VS的不同版本构建的,而不是我正在使用的,我需要重新编译它们。问题是我不知道如何做到这一点。从来不必在之前重新编译一个库。如何在Visual Studio 2013中重新编译.lib

+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使用,因此您可以使用d能够为vs2013构建effects.lib并继续开发。

另外,你可以联系作者本人从他的网页,看看他是否可以为你做到这一点,并链接到它,因为它可能你不是唯一一个打这个问题?

+0

谢谢。这似乎解决了我的问题。我只有1个其他错误来纠正,然后希望我可以运行我的程序。 – Desenski

0

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

+0

那么如果我只有.lib文件,我该如何解决这个错误? – Desenski

+0

嗯......我认为你不能在没有源代码的情况下编译它。但我可能是错的。 – bobtheboy

+0

试着看看你是否可以获得源代码。如果你有它,一切都会容易得多。 – bobtheboy

0

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

此情况下的修复方法是访问CodePlex上的Effects 11站点,然后使用VS 2013编译器构建Effects 11的全新副本。或者,你可以使用NuGet包这是VS 2013年建成

注意,当你使用VS 2013,其中包括在Windows 8.1 SDK与有些过时月神的书,你可能会试图使同一版本使用已弃用的D3DX11库。您当然可以在VS 2013中做到这一点,但您必须对项目的include/lib路径进行一些调整才能使其运行。见MSDN来自CodePlex或NuGet的Effects 11库版本完全不依赖于旧版DirectX SDK。

我对该书here也有一些一般说明。

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

相关问题