大家好,欢迎来到IT知识分享网。
【转自】http://www.cppblog.com/codejie/archive/2009/09/24/97141.html
使用LoadLibrary函数调用DLL中的函数的方法一般被称为“显式”调用,意义和使用lib的“隐式”调用相对应。
LoadLibrary调用DLL中的函数的方法比较简单,通过GetProcAddress获得函数的在DLL的地址就可以访问了,但DLL中的Class访问就相对很复杂了(目前我就发现这一种显式调用方式,哪位有其他方法么?)。一个简单的情况就是Class的函数在调用是,其名称是什么?还有Class的contructor函数怎么调用?下面的代码将演示下这些问题。
这里是DLL的文件:
DllMain.h
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#ifndef __DLLMAIN_H__
2
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#define
__DLLMAIN_H__
3
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
4
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
<
string
>
5
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
6
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#define
DllExport __declspec(dllexport)
7
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
8
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
extern
“
C
“
int
DllExport Func(
int
x);
9
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
10
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
extern
“
C
“
class
DllExport CA
11
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
12
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
13
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
14
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
15
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
16
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
17
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
18
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
19
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
20
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
21
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
;
22
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
23
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
24
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#endif
DllMain.cpp
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
<
iostream
>
2
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
3
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
“
DllMain.h
“
4
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
5
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
int
Func(
int
x)
6
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
7
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
8
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
9
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
10
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::CA(
int
x)
11
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
: _x(x)
12
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
13
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
14
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
15
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
16
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::
~
CA()
17
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
18
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
19
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
20
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
21
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
int
CA::Func0()
22
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
23
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
24
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
25
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
26
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
int
CA::Func(
int
x)
27
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
28
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
29
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
30
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
31
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
const
std::
string
&
CA::FuncS(
int
x,
const
std::
string
&
str)
const
32
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
33
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
34
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
35
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
这里需要.def文件了,因为Class在DLL中的命名不像函数命名那么简单,会被转义的,像CA::Func(int)在DLL的export表中就是?Func@CA@@QAEHH@Z
,具体定义说明可参看《xxx的自我修养》一书。因此,这里需要使用.def文件对函数进行重命名,下面是DllMain.def文件内容:
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
LIBRARY TESTDLL
2
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
EXPORTS
3
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
Func
=
Func
4
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::CA(
int
)
=
??
0CA@@QAE@H@Z
5
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::
~
CA
=
??
1CA@@QAE@XZ
6
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::Func0
=
?
Func0@CA@@QAEHXZ
7
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::Func(
int
)
=
?
Func@CA@@QAEHH@Z
8
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
;CA::FuncS(
int
,std::basic_string
<
char
>&
)
=
?
FuncS@CA@@QBEABV
?
$basic_string@DU
?
$char_traits@D@std@@V
?
$allocator@D@
2
@@std@@HABV23@@Z
9
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
CA::FuncS
=
?
FuncS@CA@@QBEABV
?
$basic_string@DU
?
$char_traits@D@std@@V
?
$allocator@D@
2
@@std@@HABV23@@Z
多说一句,这里.def的编写很需要Depends(Dependency Walker)工具的支持,其是查看DLL的首选工具啊。。
编译DLL,用下面代码进行测试:
LoadLib.cpp
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
<
iostream
>
2
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
<
string
>
3
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
4
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#include
<
windows.h
>
5
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
6
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
//
#include “DllMain.h”
7
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
8
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
#define
DllExport __declspec(dllexport)
9
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
10
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
extern
“
C
“
int
DllExport Func(
int
x);
11
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
12
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
extern
“
C
“
class
DllExport CA
13
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
14
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
15
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
16
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
17
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
18
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
19
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
20
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
21
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
22
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
23
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
24
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
;
25
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
26
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
int
(
*
func)(
int
);
27
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
void
(WINAPI
*
PCTOR)(
int
);
28
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
int
(WINAPI
*
func0)(
void
);
29
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
int
(WINAPI
*
funcc)(
int
);
30
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
const
std::
string
&
(WINAPI
*
funcs)(
int
,
const
std::
string
&
);
31
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
typedef
void
(WINAPI
*
PDTOR)(
void
);
32
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
33
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
int
main()
34
![【转载】LoadLibrary调用DLL中的Class插图3 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
{
35
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
36
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
37
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
38
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
39
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
40
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
41
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
42
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
43
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
44
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
45
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
46
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
47
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
48
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
49
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
50
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
51
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
52
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
53
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
54
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
55
![【转载】LoadLibrary调用DLL中的Class插图11 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
56
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
57
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
58
![【转载】LoadLibrary调用DLL中的Class插图13 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
59
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
60
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
61
![【转载】LoadLibrary调用DLL中的Class插图5 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
62
![【转载】LoadLibrary调用DLL中的Class插图7 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
结果还算正常:
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
100
2
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
contructor
3
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
5
4
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
50
5
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
hello world
6
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
destructor
7
![【转载】LoadLibrary调用DLL中的Class插图1 【转载】LoadLibrary调用DLL中的Class](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
上面的代码基本演示了DLL中Class的简单使用,包括对contructor、destrunctor的调用,有参、无参、多参函数调用,不知道有啥缺陷,但至少Work了,嘿嘿~
由上述代码可以看出,这种“显式”使用DLL中的Class是非常繁琐和危险的事情,因此我觉得能用“隐式”就不要用“显式”,能静态就不要用动态。。。
注意到没,代码没有演示继承和虚函数,那是因此我加入Virtual函数,程序就会core,实在搞不定,这里也就没法给出好的方案来,不知道哪位有啥建议么。。。
上面代码参考了如下地址:
http://www.codeproject.com/dll/classesexportedusingLL.asp
http://blog.csdn.net/jdcb2001/archive/2006/11/21/1401569.aspx
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34748.html