我已经开始尝试使用 dll 并遇到了这个问题。我有 2 个解决方案(VS 2012) 1. 我在哪里生成 dll(包含:templatedll.h、templatedll.cpp、templatedllshort.h) 2. 我在哪里测试它(因此我使用 templatedllshort.h)
所以这是我的第一个(dll)解决方案的代码
模板dll.h
class __declspec(dllexport) Echo
{
private:
int output;
void echo_private();
public:
Echo();
Echo(int output_);
~Echo();
void echo_public();
};
模板dll.cpp
#include "templatedll.h"
#include <iostream>
Echo::Echo()
{
output = 0;
std::cout << "Echo()\n";
}
Echo::Echo(int output_)
{
this->output = output_;
std::cout << "Echo(int)\n";
}
Echo::~Echo()
{
std::cout << "~Echo()\n";
}
void Echo::echo_private()
{
std::cout << "this is output: " << this->output << std::endl;
}
void Echo::echo_public()
{
echo_private();
}
templatedllshort.h(这是一个简短的标题,它隐藏了我班级的所有私人部分)
class __declspec(dllimport) Echo
{
public:
Echo();
Echo(int output_);
~Echo();
void echo_public();
};
我测试它的第二个解决方案
#include "templatedllshort.h"
int main()
{
Echo e(1);
e.echo_public();
return 0;
}
一切都正确链接,两种解决方案都可以编译和运行。返回 0 之后出现运行时检查失败;陈述。这是预期的输出:
Echo(int)
this is output: 1
~Echo()
任何人都可以看到问题出在哪里?谢谢