0

我所拥有的是一个由 3 层组成的项目。基础层是一组原生 C++ 静态库,它们是游戏引擎的核心组件,如图形、音频等。

中间层将所有这些组合到另一个静态库中,即引擎本身。这样做的原因是因为我希望将引擎编译为可执行文件以供分发,而且还可以将其包含到最顶层。

顶层是为快速创建游戏内容而设计的 .net 应用程序。我想免费分发 Studio 和用于商业用途的 engine.exe。因此,我为什么要将引擎创建到库中。

在某个地方,一个错误正在通过编译阶段。engine.exe 工作正常,但是当我添加时 .net 应用程序中断:

#include <string>
using std::string;

该程序通过编译阶段没有任何错误,但在到达第一个断点之前就爆炸了,事实上它甚至没有达到我所知道的主函数。要么优化它,要么其他。我得到的错误是调试断言_CrtIsValidHeapPointer(pUserData)。它位于 dbgheap.c 的第 1516 行。我知道那不是问题,但我希望有人能认出这个断言并能提供帮助。

我最好的选择是问题与我如何链接库以及编译器设置有关,我尝试了不同的设置,但尚未解决问题。如果有人对此有任何经验,如果您需要了解更多信息,那就太好了,我将非常乐意发布更多信息。

4

1 回答 1

0

我不知道为什么会这样,但是这里的答案可以解决问题。

解决方案是将__DllMainCRTStartup@12添加到属性 | 中的“强制符号引用”中。链接器 | 包含静态库的 C++/ÇLI 项目的输入。

于 2016-01-26T18:03:14.303 回答