我已經開始嘗試使用dll並遇到此問題。我有2種溶液(VS 2012) 1.我在哪裏產生的DLL(包含:templatedll.h,templatedll.cpp,templatedllshort.h) 2.如我測試(I使用因此templatedllshort.h)運行時檢查失敗#2 - 變量周圍的堆棧已損壞
所以這是我第一次(DLL)的代碼解決方案
templatedll.h
class __declspec(dllexport) Echo
{
private:
int output;
void echo_private();
public:
Echo();
Echo(int output_);
~Echo();
void echo_public();
};
templatedll.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();
}
模板llshort.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()
任何一個能看到的問題是什麼? 謝謝
我不認爲你可以重新定義這樣的類,並讓它工作。我的意思是你需要在公共和私人標題中使用相同的尺寸。 – drescherjm