我正在尝试使用scons将我的项目编译为共享库。我正在使用Windows 7和Visual Studio 2013 RC。在项目中,我正在使用boost。
项目编译得很好。但是,当它尝试链接时,我得到以下内容:
scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
scons: Reading SConscript files ...
Compiling Glr
scons: Reading SConscript files ...
Parsing Shaders into header ShaderData.h
Done parsing Shaders into header ShaderData.h
scons: done reading SConscript files.
scons: Building targets ...
Using tempfile c:\users\jarrett\appdata\local\temp\tmpecwym3.lnk for command line:
link /nologo /dll /out:build\glr.dll /implib:build\glr.lib /LIBPATH:build /LIBPATH:src /LIBPATH:C:\Users\Jarrett\projects\angelscript-sdk\angelscript\lib /LIBPATH:C:\Users\Jarrett\projects\sqlite3 /LIBPATH:C:\Users\Jarrett\projects\berkelium-win32\lib /LIBPATH:C:\Users\Jarrett\projects\SFML\lib "/LIBPATH:C:\Program Files\Assimp\lib\x86" "/LIBPATH:C:\Program Files (x86)\Boost\lib" /LIBPATH:C:\Users\Jarrett\projects\FreeImage\Dist "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib" opengl32.lib glew32.lib berkelium.lib sfml-system.lib sfml-window.lib assimp.lib freeimage.lib libboost_log-vc120-mt-1_54.lib libboost_log_setup-vc120-mt-1_54.lib libboost_date_time-vc120-mt-1_54.lib libboost_thread-vc120-mt-1_54.lib libboost_wave-vc120-mt-1_54.lib libboost_regex-vc120-mt-1_54.lib libboost_filesystem-vc120-mt-1_54.lib libboost_system-vc120-mt-1_54.lib build\BasicSceneManager.obj build\BasicSceneNode.obj build\Camera.obj build\GlrProgram.obj build\GraphicsEngine.obj build\Light.obj build\Window.obj build\common\math\Math.obj build\common\io\File.obj build\BasicSceneManager.obj build\BasicSceneNode.obj build\Camera.obj build\GlrProgram.obj build\GraphicsEngine.obj build\Light.obj build\Window.obj build\exceptions\Exception.obj build\exceptions\FormatException.obj build\exceptions\GlException.obj build\exceptions\IoException.obj build\gui\CallbackParameter.obj build\gui\GUI.obj build\gui\GUIObject.obj build\gui\HtmlGuiComponent.obj build\models\Animation.obj build\models\AssImpLoader.obj build\models\Model.obj build\models\ModelLoader.obj build\models\ModelManager.obj build\glw\Animation.obj build\glw\AnimationManager.obj build\glw\Constants.obj build\glw\Material.obj build\glw\MaterialManager.obj build\glw\Mesh.obj build\glw\MeshManager.obj build\glw\OpenGlDevice.obj build\glw\Texture.obj build\glw\TextureManager.obj build\glw\shaders\CPreProcessor.obj build\glw\shaders\GlrParser.obj build\glw\shaders\GlrPreProcessor.obj build\glw\shaders\GlrShader.obj build\glw\shaders\GlrShaderProgram.obj build\glw\shaders\GlslShader.obj build\glw\shaders\GlslShaderProgram.obj build\glw\shaders\ShaderProgramManager.obj
link @c:\users\jarrett\appdata\local\temp\tmpecwym3.lnk
Using tempfile c:\users\jarrett\appdata\local\temp\tmpep9gzl.lnk for command line:
link /nologo /dll /out:build\glr.dll /implib:build\glr.lib /LIBPATH:build /LIBPATH:src /LIBPATH:C:\Users\Jarrett\projects\angelscript-sdk\angelscript\lib /LIBPATH:C:\Users\Jarrett\projects\sqlite3 /LIBPATH:C:\Users\Jarrett\projects\berkelium-win32\lib /LIBPATH:C:\Users\Jarrett\projects\SFML\lib "/LIBPATH:C:\Program Files\Assimp\lib\x86" "/LIBPATH:C:\Program Files (x86)\Boost\lib" /LIBPATH:C:\Users\Jarrett\projects\FreeImage\Dist "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib" opengl32.lib glew32.lib berkelium.lib sfml-system.lib sfml-window.lib assimp.lib freeimage.lib libboost_log-vc120-mt-1_54.lib libboost_log_setup-vc120-mt-1_54.lib libboost_date_time-vc120-mt-1_54.lib libboost_thread-vc120-mt-1_54.lib libboost_wave-vc120-mt-1_54.lib libboost_regex-vc120-mt-1_54.lib libboost_filesystem-vc120-mt-1_54.lib libboost_system-vc120-mt-1_54.lib build\BasicSceneManager.obj build\BasicSceneNode.obj build\Camera.obj build\GlrProgram.obj build\GraphicsEngine.obj build\Light.obj build\Window.obj build\common\math\Math.obj build\common\io\File.obj build\BasicSceneManager.obj build\BasicSceneNode.obj build\Camera.obj build\GlrProgram.obj build\GraphicsEngine.obj build\Light.obj build\Window.obj build\exceptions\Exception.obj build\exceptions\FormatException.obj build\exceptions\GlException.obj build\exceptions\IoException.obj build\gui\CallbackParameter.obj build\gui\GUI.obj build\gui\GUIObject.obj build\gui\HtmlGuiComponent.obj build\models\Animation.obj build\models\AssImpLoader.obj build\models\Model.obj build\models\ModelLoader.obj build\models\ModelManager.obj build\glw\Animation.obj build\glw\AnimationManager.obj build\glw\Constants.obj build\glw\Material.obj build\glw\MaterialManager.obj build\glw\Mesh.obj build\glw\MeshManager.obj build\glw\OpenGlDevice.obj build\glw\Texture.obj build\glw\TextureManager.obj build\glw\shaders\CPreProcessor.obj build\glw\shaders\GlrParser.obj build\glw\shaders\GlrPreProcessor.obj build\glw\shaders\GlrShader.obj build\glw\shaders\GlrShaderProgram.obj build\glw\shaders\GlslShader.obj build\glw\shaders\GlslShaderProgram.obj build\glw\shaders\ShaderProgramManager.obj
build\BasicSceneManager.obj : warning LNK4042: object specified more than once; extras ignored
build\BasicSceneNode.obj : warning LNK4042: object specified more than once; extras ignored
build\Camera.obj : warning LNK4042: object specified more than once; extras ignored
build\GlrProgram.obj : warning LNK4042: object specified more than once; extras ignored
build\GraphicsEngine.obj : warning LNK4042: object specified more than once; extras ignored
build\Light.obj : warning LNK4042: object specified more than once; extras ignored
build\Window.obj : warning LNK4042: object specified more than once; extras ignored
LINK : fatal error LNK1104: cannot open file 'libboost_log-vc110-mt-1_54.lib'
scons: building terminated because of errors.
scons: *** [build/glr.dll] Error 1104
我很好奇为什么它试图链接到libboost_log-vc110-mt-1_54.lib
而不是libboost_log-vc120-mt-1_54.lib
,这是我在链接命令中指定的。另外,据我所知,vcxxx
是用于告诉编译器构建boost库的编译器标签...所以它几乎像scons
认为使用Visual Studio构建了boost 2012年,这将是vc110
......我不确定。
答案 0 :(得分:0)
事实证明,这是升级1.54无法识别MSVC 2013的问题。
我下载了升级主干(1.55),已编译,并且链接正确。