6546|15

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC下如何调用动态链接库? [复制链接]

在VS2005中可以很方便的使用引用,将DLL文件添加进来,然后加一句using ***就可以使用库中的类和函数了,在EVC中有没有对应的方法可以实现?

最新回复

哦,这样啊,那看来这个库只能在VS上用了,只能是换个开发环境再试试了。 能关注我的问题这么久,而且还这么费心,我已经很感激了,之前我根本就不了解,而且在这其中了也学到了不少的东西,根本不存在误导的问题,非常非常感谢!  详情 回复 发表于 2010-4-7 15:15
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1 静态调用DLL
Project | setting
Link选项卡Library modules处
添加“XXX.lib”
然后#include "XXX.h"
把XXX.lib(引入库文件),XXX.DLL(动态库文件)
XXX.h(头文件)
全部放到工程目录下

2 动态调用DLL
通过
LoadLibrary
GetProcAddress
FreeLibrary实现。

朱铭雷
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 joyzml 的回复:
1 静态调用DLL
Project | setting
Link选项卡Library modules处
添加“XXX.lib”
然后#include "XXX.h"
把XXX.lib(引入库文件),XXX.DLL(动态库文件)
XXX.h(头文件)
全部放到工程目录下

2 动态调用DLL
通过
LoadLibrary
GetProcAddress
FreeLibrar……


我使用的32feet.NET库函数,只提供了DLL文件,没有.h和.lib文件,但是动态调用的话有一个问题就是在使用每个函数的时候都需要重新定义,比较麻烦,而且我不知道在使用类的时候该如何声明?
EVC中没有类似引用这样的功能?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
EVC下使用动态库
我一般使用就是刚才说的两种方法
楼主所述的“引用的功能”我不太清楚
不过动态调用麻烦但不繁琐
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 joyzml 的回复:
EVC下使用动态库
我一般使用就是刚才说的两种方法
楼主所述的“引用的功能”我不太清楚
不过动态调用麻烦但不繁琐


哦,但是GetProcAddress可以声明类吗?声明的方法一和函数样吗?
我用的是EVC的控制台,需要加什么头文件吗?
在使用LoadLibrary函数的时候提示:
error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'char [27]' to 'const unsigned short *'
不知道为什么?
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 
我是这么用的:
HINSTANCE hinst;
if(hinst==NULL)
hinst=LoadLibrary("InTheHand.Net.Personal.dll");
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主是第一次开发Windows CE的应用程序吧?
Windows CE只支持UNICODE字符
也就是宽字符,所以下面这行代码,应该编译有错误
hinst=LoadLibrary("InTheHand.Net.Personal.dll");
也就是:
cannot convert parameter 1 from 'char [27]' to 'const unsigned short *'
楼主将代码改为:
hinst=LoadLibrary(L"InTheHand.Net.Personal.dll");
或者
hinst=LoadLibrary(_T("InTheHand.Net.Personal.dll"));
试试。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
L宏 与 _T宏 通知编译器使用16bit的宽字符。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
不错,不错,学习,学习
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
不错的问题和回答啊 ,对我有用
大家支持啊
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
mark
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 6 楼 joyzml 的回复:
楼主是第一次开发Windows CE的应用程序吧?
Windows CE只支持UNICODE字符
也就是宽字符,所以下面这行代码,应该编译有错误
hinst=LoadLibrary("InTheHand.Net.Personal.dll");
也就是:
cannot convert parameter 1 from 'char [27]' to 'const unsigned short……


是啊是啊,刚开始弄,好多都不懂,LoadLibrary现在通过了,如何使用dll中的类呢?也是用GetProcAddress吗?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 
是的。你可以试试。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 12 楼 joyzml 的回复:
是的。你可以试试。

还是不行啊,函数使用函数指针的方法使用,但是类怎么声明啊,就是说GetProcAddress在使用类的时候应该怎么用?试了半天都不行~好难啊~谢谢你关注了这么久
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

15
 
typedef void(*pXXXdll)(void);
HINSTANCE hModule = LoadLibrary(_T("XXX.dll"));
pXXXdll pDll = (pXXXdll)GetProcAddress(hModule,_T("XXX.dll"));
pDll();
FreeLibrary(hModule);
这样的确只能使用库中的函数

楼主使用的InTheHand.Net.Personal.dll
我没有接触过,不清楚细节
再说下去,怕误导了楼主。

楼主要不去查查其他方法
我问了一个人,他说在EVC中不能够使用InTheHand.Net.Personal.dll

如果误导了楼主,还请原谅。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 joyzml 的回复:
typedef void(*pXXXdll)(void);
HINSTANCE hModule = LoadLibrary(_T("XXX.dll"));
pXXXdll pDll = (pXXXdll)GetProcAddress(hModule,_T("XXX.dll"));
pDll();
FreeLibrary(hModule);
这样的确只能使用库中的函数

楼主使用的In……


哦,这样啊,那看来这个库只能在VS上用了,只能是换个开发环境再试试了。
能关注我的问题这么久,而且还这么费心,我已经很感激了,之前我根本就不了解,而且在这其中了也学到了不少的东西,根本不存在误导的问题,非常非常感谢!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表