相关疑难解决方法(0)

如何安全地将对象(尤其是STL对象)传入DLL或从DLL传递?

如何将类对象(尤其是STL对象)传递给C++ DLL?

我的应用程序必须以DLL文件的形式与第三方插件交互,我无法控制这些插件构建的编译器.我知道STL对象没有保证ABI,我担心我的应用程序会导致不稳定.

c++ windows dll stl abi

99
推荐指数
4
解决办法
3万
查看次数

无法跨DLL传递std :: wstring

我在Visual Studio 2010中设置了一个项目,以针对现有的MFC DLL编写单元测试.我正在使用单头单元测试框架,并链接到单元测试项目中的MFC DLL的lib包装器.我正在尝试构建一个接受std::wstring它的构造函数的类.这是我的测试的样子:

TEST_CASE("MyProject/MyTest", "Do the test.")
{
    MockDbService mockDbService;
    Foobar foo(L"{F00DFACE-FEED-DEAD-BEEF-C0FFEEDECADE}", mockDbService);

    foo.loadObject();

    REQUIRE(mockDbService.getMethodInvokeCount("query()") >= 1);
}
Run Code Online (Sandbox Code Playgroud)

Foobar从测试中的MFC DLL导出的类在哪里.但是,测试框架会报告意外的异常.std::wstring在将字符串复制到构造函数时,我将其跟踪到了复制构造Foobar函数.MSVC调试器将源字符串报告为<Bad Ptr>.

我创建了一个虚拟构造函数,Foobar::Foobar(long num, IDbService& db)所有的值(包括IDbService&)都很好.

MFC DLL和我的单元测试EXE都共享一个属性表,它应该保持编译器标志等效.我正在调试模式下构建并运行测试.任何想法为什么std::wstring不能跨DLL复制?

c++ dll visual-studio-2010 visual-c++

6
推荐指数
1
解决办法
2203
查看次数

标签 统计

c++ ×2

dll ×2

abi ×1

stl ×1

visual-c++ ×1

visual-studio-2010 ×1

windows ×1