Premake 生成解决方案不会在 Release 中编译,但会在 Debug 中编译
Premake generated solution wont compile in Release but compiles in Debug
我在 Premake that consists of a SharedLib
and a ConsoleApp
that links to that SharedLib
. Furthermore, the SharedLib
links to the SFML 个二进制文件中设置了一个项目。
我之前设置成功:
- 包含 ConsoleApp
和 SharedLib
的预制项目 link 到
- 包含 ConsoleApp
的预制项目 link 到 SFML 二进制文件
但是将两者结合起来在 release
build
中是行不通的
这是 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 ==========
我的预制项目的文件夹结构:
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
- 我 link 到 SharedLib
项目 link 到 SFML 二进制文件
我刚刚在 App.h
/App.cpp
中添加了一个空的构造函数和析构函数,它现在似乎可以工作...
如果有人能解释我为什么需要定义那些,如果我使用 App.h
/App.cpp
作为 dll
的一部分,我将不胜感激,但如果我直接使用它们则不需要作为 Executable
.
的一部分
我在 Premake that consists of a SharedLib
and a ConsoleApp
that links to that SharedLib
. Furthermore, the SharedLib
links to the SFML 个二进制文件中设置了一个项目。
我之前设置成功:
- 包含 ConsoleApp
和 SharedLib
的预制项目 link 到
- 包含 ConsoleApp
的预制项目 link 到 SFML 二进制文件
但是将两者结合起来在 release
build
这是 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 ==========
我的预制项目的文件夹结构:
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
- 我 link 到 SharedLib
项目 link 到 SFML 二进制文件
我刚刚在 App.h
/App.cpp
中添加了一个空的构造函数和析构函数,它现在似乎可以工作...
如果有人能解释我为什么需要定义那些,如果我使用 App.h
/App.cpp
作为 dll
的一部分,我将不胜感激,但如果我直接使用它们则不需要作为 Executable
.