此问答环节来自lots的lots和questions中与sfml库相关的内容,当人们尝试手动配置其VS项目时。有时答案不完整或过于具体。
我想在一篇文章中介绍如何配置VS,使其能够静态和动态地使用SFML库。
所以:
1。如何以一般方式动态地使用sfml库 配置我的VS项目?
2。如何以一般方式通过sfml库静态配置我的VS项目?
答案 0 :(得分:0)
我将这个答案分为两类,如何将sfml 配置为动态库,以及如何将其配置为静态库。>
让我们创建一个VS项目(我将使用VS2013和SFML 2.5.1,但与其他版本几乎相同)。将其创建为 ConsoleApplication 并选中 Empty Project 。
最好下载sfml libraries(最新的稳定版本),然后选择相应的系统(在我的情况下为 Visual C ++ 12(2013)-64位)。将此文件解压缩到您的.vcxproj
文件所在的位置。根据您的版本,这将创建一个名为 SFML-X.X.X 的文件夹。
下载external libraries,在我的情况下为64 bits版本。在库文件夹中创建一个名为 extlib 的文件夹,并将此外部库放置在此处。
创建一个main.cpp
文件,然后粘贴SFML tutorials中的示例代码。
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
转到 Build-> Configuration Manager 。如果使用的是64位库,则首先应创建一个新的解决方案平台。单击 Active Solutions Platform-> New ,然后从 Win32 配置中选择 x64 复制。我更喜欢取消选中 创建新项目平台。
创建 Debug-Dynamic 和 Release-Dynamic 编译配置文件。选择活动的解决方案平台后,单击(项目的)配置和新建。您可以将其称为 Debug-Dynamic ,并从Debug配置中复制它(也请取消选中 Create new ... )。重复创建动态发布配置。
打开项目属性->调试。选择 Debug-Dynamic (调试动态)配置,并使用值PATH=$(ProjectDir)\SFML-2.5.1\bin;%PATH%. This will indicate VS where
修改 Environment 字段。可以找到dll库。
在 C / C ++ 部分中,通过添加此路径$(ProjectDir)\SFML-2.5.1\include
来修改其他包含目录字段。这将指示VS .hpp
文件的位置。
在 Linker 部分中,通过添加此路径$(ProjectDir)\SFML-2.5.1\lib
来修改其他库目录字段。这将指示VS在哪里可以找到.lib
个文件。
最后,在 Linker-> Input 上,通过添加所需的所有.lib
文件来修改其他依赖项字段:
sfml-audio-d.lib
sfml-graphics-d.lib
sfml-network-d.lib
sfml-system-d.lib
sfml-window-d.lib
注意-d
后缀以表示调试库
-d
,因为它们是发布库转到 Build-> Configuration Manager 。创建 Debug-Static 和 Release-Static 编译配置文件。选择活动的解决方案平台后,单击(项目的)配置和新建。您可以将其称为 Debug-Static 并从Debug配置中复制它(也请取消选中 Create new ... )。重复创建发布静态配置。
打开项目属性并选择 Debug-Static 配置。在 C / C ++ 部分中,通过添加此路径$(ProjectDir)\SFML-2.5.1\include
来修改其他包含目录字段。这将指示VS .hpp
文件的位置。
在 C / C ++ 部分-> Preprocessor *上,通过添加SFML_STATIC
定义来修改 Preprocessor定义字段。这将指示预处理器SFML将被静态编译。
在 Linker 部分中,通过添加此路径$(ProjectDir)\SFML-2.5.1\extlib;$(ProjectDir)\SFML-2.5.1\lib;
来修改其他库目录字段。这将指示VS,可以在其中找到外部来源和SFML的.lib
文件。
最后,在 Linker-> Input 部分中,使用所有需要的.lib
文件修改 Additionaldependents 字段:
sfml-audio-s-d.lib
sfml-graphics-s-d.lib
sfml-network-s-d.lib
sfml-system-s-d.lib
sfml-window-s-d.lib
flac.lib
freetype.lib
ogg.lib
openal32.lib
opengl32.lib
vorbis.lib
vorbisenc.lib
vorbisfile.lib
winmm.lib
gdi32.lib
ws2_32.lib
注意-d
后缀以表示调试库
Note2 -s
后缀表示静态库
-d
,因为它们是发行库,但它们将保留后缀-s
。