错误 LNK2001 __imp_fprintf Visual Studio 2015 RC

10

由于许可证已过期,我最近被迫从Visual Studio 2015 Pre-Release升级到Visual Studio 2015 Release Candidate

我的项目之前构建很好,但现在不行了。我只得到两个链接错误,并且我已经花了过去两天时间试图解决它们:

    1>SDL2main.lib(SDL_windows_main.obj) : error LNK2001: unresolved external symbol __imp_fprintf
    1>SDL2main.lib(SDL_windows_main.obj) : error LNK2001: unresolved external symbol __imp___iob_func

我正在链接SDL2main,因为我是从它们的网站上获取的,在版本2.0.0和版本2.0.3中都遇到了相同的错误,因此我认为这不是特定版本的问题。

我已经指定了以下目录以用于库(请注意x64文件夹,我正在构建64位,我还使用"b2 address-model=64"构建了boost)。

$(SolutionDir)../external/boost_1_58_0/stage/lib/
$(SolutionDir)../external/SDL/SDL2_ttf-2.0.12/lib/x64/
$(SolutionDir)../external/SDL/SDL2_mixer-2.0.0/lib/x64/
$(SolutionDir)../external/SDL/SDL2_image-2.0.0/lib/x64/
$(SolutionDir)../external/SDL/SDL2-2.0.0/lib/x64/
$(LibraryPath)
注意:我已经尝试过SDL2-2.0.3和SDL2-2.0.0,其中SDL2-2.0.0是我之前的工作版本(使用VS2015)。我没有安装Visual Studio 2013,我的平台工具集必须升级到Visual Studio 2015(v140),但我也尝试了另一个选项:Visual Studio 2015-Windows XP(v140_xp)。我想要的是一个明确的解决方法。如果需要,我可以提供进一步的细节。

1
链接到SDL2main,因为我是从他们的网站上获取的。你最好自己构建它。 - stijn
已经构建了SDL2并且似乎编译成功,但是我需要让它运行起来,因为我还需要更新一些DLL文件。 - M2tM
1
似乎已经成功了,如果你想要一些积分,就回答它吧。 :) @stijn 我不需要编译SDL mixer、image或ttf,只需要编译SDL主项目即可。 - M2tM
好的,这或许对未来的访问者有用,所以我会给出一个答案。 - stijn
@stijn 只是为了好玩的跟进:是的,这个问题似乎很相关,因为在过去几个月里,我已经有人涌入并投票支持它。再次感谢您的时间! - M2tM
1个回答

2
SDL2main未使用与您所使用的VS版本相同的构建,而且预发布/RC版本中的任何内容并没有真正保证完全向后兼容。如果您有源代码,最好总是自己构建所有内容,使用大致相同的构建选项,特别是静态/动态链接和多线程等选项,这样您就可以获得完全兼容的库。
还请参见this report

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接