相关疑难解决方法(0)

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

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

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

c++ windows dll stl abi

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

在dll-interfaces中使用shared_ptr

我的dll中有一个抽象类.

class IBase {
  protected:
       virtual ~IBase() = 0;
  public:
       virtual void f() = 0;
};
Run Code Online (Sandbox Code Playgroud)

我想进入IBase加载DLL的exe文件.第一种方法是创建以下功能

IBase * CreateInterface();
Run Code Online (Sandbox Code Playgroud)

并添加虚拟函数Release()IBase.

第二种方法是创建另一个功能

boost::shared_ptr<IBase> CreateInterface();
Run Code Online (Sandbox Code Playgroud)

并且不需要任何Release()功能.

问题.

1)在第二种情况下,在dll(而不是在exe文件中)中调用析构函数和内存释放是否正确?

2)如果使用不同的编译器(或不同的设置)编译exe-file和dll ,第二种情况是否能正常工作.

c++ dll boost abstract-class shared-ptr

23
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

dll ×2

abi ×1

abstract-class ×1

boost ×1

shared-ptr ×1

stl ×1

windows ×1