我在使用 C++ 编写的 dll 时遇到问题。发生了一些我自己无法解决的非常奇怪的行为。
很难准确描述发生了什么,但我会尽力而为。基本上我的 DLL 中有一个类,它有一个私有属性和一个公共构造函数。当我初始化这个类然后退出程序时,我得到一个错误。
“运行时检查失败 #2 - 变量 'test' 周围的堆栈已损坏”
我在这里有2 个项目:
- 名为“ testdll ”的 DLL。
- 名为“ test ”的控制台测试程序。
我已将此错误归结为最简单的可重现形式,以尝试缩小可能的原因,您将在下面找到我的代码。
项目“testdll”,文件 testdll.h:
#include <string>
class testdll
{
public:
__declspec(dllexport) testdll(); // Empty but same error if prams are used.
private:
std::string _var;
};
项目“testdll”,文件 testdll.cpp:
#include "testdll.h"
testdll::testdll()
{
}
项目“测试”,文件 testdll.h:
#include <string>
class testdll
{
public:
__declspec(dllimport) testdll();
};
项目“测试”,文件 stdafx.h:
#pragma once
#include "targetver.h"
#include <tchar.h>
项目“测试”,文件 test.cpp:
#include "stdafx.h"
#include "testdll.h"
int _tmain(int argc, _TCHAR* argv[])
{
testdll test;
return 0;
}
如果需要,我可以将Visual C++ 2010解决方案文件以您选择的存档格式发送给您。请帮忙!我不知道是怎么回事。
可选信息: 语言(或软件):C++
已尝试: 删除构造函数定义,该方法有效但不是可用的解决方案,也不能解释问题。也可以将我所有的私有属性变成指针,但是我不应该这样做。