C++ 导出c++;在dll中初始化

C++ 导出c++;在dll中初始化,c++,dll,dllexport,C++,Dll,Dllexport,我有一个具有基本功能的类——两个成员和两个getter/setter //xyzFile.h class MACRO_DLL_EXPORT xyz { public: bool getStatus() {return status;} void setStatus(bool currstatus) {status = currstatus;} . . . private: bool status; . . . }; 因此,我只

我有一个具有基本功能的类——两个成员和两个getter/setter

//xyzFile.h

class MACRO_DLL_EXPORT xyz
{
   public:
   bool getStatus() {return status;}
   void setStatus(bool currstatus) {status = currstatus;}
   .
   .
   .
   private:
   bool status;
   .
   .
   .
};
因此,我只是在一个.h文件中声明和定义了这个类,而没有.cpp文件。当我导出这个类并尝试在另一个dll中使用它时,我会得到各种各样的链接器错误。当我只引入一个空的.cpp文件时,所有这些错误都已修复。从我到目前为止的理解来看,这是因为没有.cpp文件,我们就没有obj文件,因此链接有问题。这是对的吗?

是的,这是对的:

  • 如果在DLL项目中没有.cpp,则不会生成DLL。因此,所有与dll的链接都将被删除

  • 然而,在您的.h中,您拥有所有必需的代码:那么,您是否拥有链接器依赖项,代码是否可以编译


对于为类构建DLL,只将类规范放在头文件中更安全,而不需要实现函数。将函数实现放在库的.cpp中

什么错误?在你的帖子中包含它们。从IDE中创建一个普通的DLL项目以获得一个工作示例或下载一些其他可以工作的DLL源程序包。你能解释一下在没有源文件的情况下如何使用DLL吗?里面有什么?若并没有cpp文件,你们就不会得到lib文件,那个是在客户端应用程序的链接阶段使用的。你想干什么?