C++ DLL中的导出类在编译时会发出警告[重复]
Posted
技术标签:
【中文标题】C++ DLL中的导出类在编译时会发出警告[重复]【英文标题】:exporting class in C++ DLL gives warning while compiling [duplicate] 【发布时间】:2015-10-09 18:42:28 【问题描述】:我在网上找到了一个 IPC 库,编译后它会变成“.lib”,所以我尝试将其转换为 DLL 而不是使用 .lib,但在声明导出功能后我需要导出 VS Express 编译器给出了一个警告声明
'PipeTransport::buf_': class 'std::vector>' 需要 > 有 dll 接口供类的客户端使用
EXPORT 定义
#define EXPORT __declspec(dllexport)
这是导出的代码...
class EXPORT PipeTransport : public PipeWin
public:
static const size_t kBufferSz = 4096;
size_t Send(const void* buf, size_t sz)
return Write(buf, sz) ? ipc::RcOK : ipc::RcErrTransportWrite;
char* Receive(size_t* size);
private:
IPCCharVector buf_;//The Line giving error
;
图书馆链接是here
报错的头文件是here
我阅读了this,但由于我是 C++ 新手(完全是菜鸟),所以我不太了解它。
【问题讨论】:
如果你用谷歌搜索你的错误,答案会在第一个结果中返回。为什么我们必须为您搜索一些东西? 也许它显示了您所在位置的结果,谷歌没有在这里向我显示这个......而且,感谢您的建议......这正是我想知道的。 .. 实例化一个类...再次感谢 【参考方案1】:导出类对象的C方式是这样的,但我不知道如何在DLL中导出类
Here your DLL
class AbstractClass
public:
virtual void somefunction() = 0;
//Inherite from this class
class MyClass : public AbstractClass
virtual void somefucntion()/*implement*/
//Create your export object
MyClass* myObject = NULL;
//Create some EXPORT define to make it easy when you declare function
#define EXPORT_DLL __declspec(dllexport)
//Declare function
extern "C" EXPORT_DLL void* myExportedFunction ();
//Implement
EXPORT_DLL void* myExportedFunction ()
if(myObject == NULL)
myObject = new MyClass();
return myObject;
现在你可以从你的函数外部调用这个函数。当然你需要加载你的dll,你的函数和其他东西,这里我只是通过这些步骤,只告诉你如何使用这个代码。
//You must have a declaration of your abstract class in exterior of dll
AbstractClass* dllObjet = NULL;
dllObject = myExportedFunction()
//And now you can use it
dllObject->somefucntion();
【讨论】:
错了。您可以从 DLL 中导出类。 哦,我的错,我一直认为这是不可能的,我看了谷歌,你是对的,对不起,我修改了我的答案 如果我不需要这些课程怎么办?我应该按照这种方法来简化函数名而不是所有这些 :: Class 位吗?以上是关于C++ DLL中的导出类在编译时会发出警告[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何导出 C# dll 方法/函数以在 C++ 中使用它 [重复]
在 Microsoft Visual C++ 2015 中编译 DLL——警告 C4251 需要有 dll 接口才能被类的客户端使用——使用 Boost 时?