![]() |
1
15
所以有两种方法可以加载DLL。第一种方法是引用dll中的一个或多个符号(例如,类名),提供适当的import.lib并让链接器解决所有问题。 第二种方法是通过LoadLibrary显式加载DLL。 这两种方法都适用于C级函数导出。您可以让链接器处理它,也可以如您所指出的那样调用getprocaddress。 但说到出口 班 通常只使用第一种方法,即隐式链接到DLL。在这种情况下,DLL是在应用程序启动时加载的,如果找不到DLL,应用程序将无法加载。 如果要链接到在dll中定义的类,并且希望在程序启动后某个时间动态加载该dll,则有两个选项:
所有的事情都考虑到了…最好是使用隐式链接,在这种情况下,您肯定希望使用上面所示的预处理器技术。实际上,如果您在Visual Studio中创建一个新的dll并选择“导出符号”选项,这些宏将为您创建。 祝你好运。。。 |
![]() |
2
16
当您构建动态链接库和将使用动态链接库的模块时,您可以使用某种定义来区分两者,然后在类头文件中执行如下操作:
编辑:crashmstr打败了我! |
![]() |
3
12
我使用一些宏来标记导入或导出代码 #ifdef ISDLL #define DLL __declspec(dllexport) #endif #ifdef USEDLL #define DLL __declspec(dllimport) #endif 然后在头文件中声明类: class DLL MyClassToExport { ... }
然后
我不知道你是否需要做任何不同的工作
|
![]() |
4
12
从DLL导出C++类的简单工作示例: 下面给出的示例仅为您提供了一个简短的概述,说明了dll和exe如何相互作用(不言而喻),但要将其更改为生产代码,还需要添加更多内容。 全样本示例分为两部分 a.创建.dll库(mydll.dll) b.创建使用.dll库(应用程序)的应用程序。 a..dll项目文件(mydll.dll): 1。DLL报头
2。DLLSRCCPP
b.加载并链接已创建的.dll文件的应用程序项目:
|
![]() |
5
7
最近我问自己同样的问题,并总结了我的发现。 in a blog post . 你会发现它很有用。
它包括从DLL导出C++类,以及动态加载它们。
|
![]() |
6
0
如果您愿意将vtable放在要导出的类中,可以导出返回接口的函数,并在.dll中实现该类,然后将其放在.def文件中。你可能需要做一些申报的小把戏,但不应该太难。 就像com一样。:) |
![]() |
AstralHex · 矩阵乘法代码工作不正常 3 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |