您的位置:首页 > 其它

关于导出DLL问题

2008-06-04 14:47 148 查看
在编译dll时一直没有什么问题,在同一个工程直接测试也没有什么问题,但是等到用我的DLL时确出现了一堆的问题.

问题 1

导出派生类,用dll 出现Link2019 无法解析的外部符号 基类的析构函数在派生类用到, 解决方法 1 基类也导出,解决方发2 不定义基类的析构函数. 虽然问题解决了, 但是到现在我也不知道为什么 .

问题2

void SmsXmlParserTest::TestGetDcpCplName10()
{
int result = XMLPARSER_initValue;
vector<string> cplFileName;
result = xmlParse->Inite();
string assetMapFilePath = "E://xml//SMS_XMLPaser_1.1_Test//XMLPaserUnitTest//" ;
result = xmlParse->XmlInite(assetMapFilePath);
string pkl="";
string data = "";
result = xmlParse->GetDcpName(pkl,data);
CPPUNIT_ASSERT_EQUAL(result,XMLPARSER_SUCCESS);
}

xmlParse是从dll导出的类,pkl,data都得到了正确的值,但是在该函数结束时string自动析构时确出现了问题.

问题是 Expression: _CrtIsValidHeapPointer(pUserData) ;

把dll工程设置成 多线程调试 DLL (/MDd) 测试工程也必须设置成 多线程调试DLL (/MDd) 就不会出现上面的问题,但是我用CPPUnit 作单元测试,CPPUnit 工程一设置成多线程调试 DLL (/MDd)就会出现一堆的错,必须设置成单线程才没有问题,看来cppunit也有局限性. 不用cppunit测试就可以多线程调试DLL (/MDd),此时就没有问题了.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: