C++ QT,c++;DLL和对象
我对DLL相当陌生,对QT也完全陌生。我已经玩了几天了,正在尝试创建一个项目,在这个项目中,我读取一个文件的内容,并整齐地显示解析的结果。我已经编写了一个dll来解析文件格式,并希望在我的QT GUI中使用该dll 我的dll包含4个文件,SignalParse.h/cpp和Signal.h/cpp SignalParse是dll的核心,包含功能,Signal是用于存储数据的对象 我的目标是让我的QT程序在SignalParse中使用此函数:C++ QT,c++;DLL和对象,c++,qt,object,vector,dll,C++,Qt,Object,Vector,Dll,我对DLL相当陌生,对QT也完全陌生。我已经玩了几天了,正在尝试创建一个项目,在这个项目中,我读取一个文件的内容,并整齐地显示解析的结果。我已经编写了一个dll来解析文件格式,并希望在我的QT GUI中使用该dll 我的dll包含4个文件,SignalParse.h/cpp和Signal.h/cpp SignalParse是dll的核心,包含功能,Signal是用于存储数据的对象 我的目标是让我的QT程序在SignalParse中使用此函数: __declspec(dllexport) vect
__declspec(dllexport) vector<Signal> ReturnSignal()
{
return sigList;
}
这背后的目的是让GUI能够访问dll并使用它解析文件,然后读取解析的数据
然而,由于我返回了一个信号向量,我(认为我)需要在我的QT项目中包含信号。这是正常的做法吗?或者我应该尝试以另一种方式存储数据
作为一个新手,我不知道如何处理这种情况。将我的信号数据存储在一个对象中的想法似乎是最简洁的,但是在每个使用dll的程序中都必须包含该对象似乎不那么简洁
也许有更好的方法?我非常想知道我的方法是否合理,或者是否有另一种明显的方法来处理我所忽视的这类事情
谢谢 是,包括
信号将是必要的(这不是问题)。为什么要创建DLL而不是静态库?静态库(通常)更易于管理。主要是作为一种学习体验!:)我需要同时包含.h和.cpp还是只包含.h?通常,动态加载dll时,程序中不需要任何.h或.cpp。您可以在运行时动态加载dll,并在代码中匹配dllexport函数。这是一种在运行时“选择”功能的好方法,因为dll(插件)将被写入一些基本接口,您可以根据加载的dll更改运行时行为。如果您试图动态链接到该类,则在编译过程中需要.h和库(dll)进行链接。您还需要为客户端(可能)调用的所有函数定义。这不仅意味着命名函数,还包括析构函数、复制/移动构造函数等。也许还可以复制/移动作业。如果这些函数是内联的,那么很好,如果不是,您将需要CPP文件。别忘了,您还需要对您调用的任何成员类型的任何成员函数进行定义。@g19fanatic:如果您正在动态加载DLL,这是正确的,但是如果您正在链接DLL(例如运行时库),则这不是正确的。是的,包括信号是必要的(这不是问题)。为什么要创建DLL而不是静态库?静态库(通常)更易于管理。主要是作为一种学习体验!:)我需要同时包含.h和.cpp还是只包含.h?通常,动态加载dll时,程序中不需要任何.h或.cpp。您可以在运行时动态加载dll,并在代码中匹配dllexport函数。这是一种在运行时“选择”功能的好方法,因为dll(插件)将被写入一些基本接口,您可以根据加载的dll更改运行时行为。如果您试图动态链接到该类,则在编译过程中需要.h和库(dll)进行链接。您还需要为客户端(可能)调用的所有函数定义。这不仅意味着命名函数,还包括析构函数、复制/移动构造函数等。也许还可以复制/移动作业。如果这些函数是内联的,那么很好,如果不是,您将需要CPP文件。不要忘记,您还需要定义您调用的任何成员类型的任何成员函数。@g19fanatic:如果您动态加载DLL,则这是正确的;如果您链接到DLL,则这不是正确的(例如,运行时库)。
[SignalOne]
bytes: 2
format: int
offset: 0