Premake 生成的解决方案不会在 Release 中编译,但在 Debug 中编译

Posted

技术标签:

【中文标题】Premake 生成的解决方案不会在 Release 中编译,但在 Debug 中编译【英文标题】:Premake generated solution wont compile in Release but compiles in Debug 【发布时间】:2016-04-15 13:40:34 【问题描述】:

我在Premake 中设置了一个项目,其中包含一个SharedLib 和一个链接到该SharedLibConsoleApp。此外,SharedLib 链接到 SFML 二进制文件。 我之前设置成功: - 一个包含ConsoleAppSharedLib 的预制项目,它链接到 - 包含链接到 SFML 二进制文件的 ConsoleApp 的预制项目 但是在releasebuild 中将两者结合起来是行不通的

这是 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 - 我链接到链接到 SFML 二进制文件的 SharedLib 项目

【问题讨论】:

【参考方案1】:

我刚刚在App.h/App.cpp 中添加了一个空的构造函数和析构函数,它现在似乎可以工作......

如果有人能解释一下,如果我将App.h/App.cpp 用作dll 的一部分,但如果我直接将它们用作Executable 的一部分,我将不胜感激。

【讨论】:

以上是关于Premake 生成的解决方案不会在 Release 中编译,但在 Debug 中编译的主要内容,如果未能解决你的问题,请参考以下文章

为什么我不选择cmake,而是premake

premake基本配置详解

Apple Watch:使用 Premake 创建项目文件时出现问题

OpenGL SDK如何使用Premake创建新项目

简单的 C/C++ 项目自动化构建--Xmake推荐

Gradle:initwith 不适用于 minify 和 proGuard