我在Premake中设置了一个项目,该项目由SharedLib
和链接到该ConsoleApp
的SharedLib
组成。此外,SharedLib
链接到SFML二进制文件。
我之前成功安装了:
-包含ConsoleApp
和链接到的SharedLib
的预制项目
-包含链接到SFML二进制文件的ConsoleApp
的预制项目
但是将两者结合起来在release
版本中无法解决
这是MSVC 2012产生的输出:
2> main.cpp
2>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::RenderWindow::RenderWindow(void)" (__imp_??0RenderWindow@sf@@QAE@XZ) referenced in function _main
2>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (__imp_??1RenderWindow@sf@@UAE@XZ) referenced in function _main
2>..\..\.bin\Example\Release\Example.exe : fatal error LNK1120: 2 unresolved externals
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我的premake项目的文件夹结构:
SFML_PROJECT
|-- .libraries
| `-- SFML-2.3.2-Win32
| |-- include
| |-- lib
| `-- bin
|-- example
| `-- main.cpp
|-- include
| |-- App.h
| `-- Config.h
|-- src
| `-- App.cpp
`-- premake5.lua
还有我的
premake5.lua
(对于较大的文件,我感到抱歉,但是如果我将其缩短,可能会错过一些重要的内容)总结我的
ConsoleApp
版本配置:-我添加了
SFML include
-我链接到
SharedLib
项目,该项目链接到SFML二进制文件 最佳答案
我只是在App.h
/ App.cpp
中添加了一个空的构造函数和析构函数,它现在似乎可以使用...
如果有人能解释我为什么要在App.h
的一部分中使用App.cpp
/ dll
而不是在我直接将它们用作Executable
的一部分时定义我,我将不胜感激。