| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:调用动态链接库dll的问题
只看楼主 加入收藏
jidipiaoyu
Rank: 1
等 级:新手上路
帖 子:79
专家分:3
注 册:2008-12-5
结帖率:55.56%
收藏
已结贴  问题点数:0 回复次数:6 
调用动态链接库dll的问题
typedef  bool(__stdcall CHANGE)(char *,char *,BOOL,int);

void BmpToJpgDlg()
{
HINSTANCE   hInst   =   ::LoadLibrary( L"JpgVSbmp.dll ");
if(   hInst   ==   NULL   )
{
return;
}
CHANGE*   pFunc =   (CHANGE   *)::GetProcAddress(hInst, "BmpToJpg ");
CString strBMP=_T("C:\\tmp.bmp"),strJPG=_T("C:\\tmp.jpg");
pFunc(strBMP.GetBuffer(50),strJPG.GetBuffer(50),TRUE,75);
strBMP.ReleaseBuffer();
strJPG.ReleaseBuffer();
::FreeLibrary(hInst);
}
这是我所要调用的函数定义
C++定义为:BOOL BmpToJpg(LPCSTR lpBmpFileNameForIn, LPCSTR lpJpgFileNameForOut,BOOL bColor, int nQuality)
PB声明:Function Boolean BmpToJpg(string lpBmpFileNameForIn,string lpJpgFileNameForOut,Boolean bColor, int nQuality) LIBRARY "jpgvsbmp.dll"

这样会pFunc的参数会报错,求大侠告诉我该怎样传参数进去?多谢多谢
搜索更多相关主题的帖子: 动态 
2011-08-29 17:15
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:7 
HINSTANCE   hInst   =   ::LoadLibrary( L"JpgVSbmp.dll ");
if(   hInst   ==   NULL   )
{
return;
}
CHANGE*   pFunc =   (CHANGE   *)::GetProcAddress(hInst, "BmpToJpg ");
你的程序是A码还是U码啊??? 路径正确么
LoadLibrary 确定是LoadLibraryw???? "BmpToJpg ");函数名前确定不用L

2011-08-29 17:28
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
还有参数定义不一样的
一个类的对象 值传递 一个字符指针
为啥要用string 不用LPCSTR
2011-08-29 17:30
jidipiaoyu
Rank: 1
等 级:新手上路
帖 子:79
专家分:3
注 册:2008-12-5
收藏
得分:0 
回复 3楼 hahayezhe
因为我对C++确实不熟,不懂的地方很多,请指教下,
已知了一个dll,JpgVSbmp.dll中共有两个函数,其中一个函数是
C++定义为:BOOL BmpToJpg(LPCSTR lpBmpFileNameForIn, LPCSTR lpJpgFileNameForOut,BOOL bColor, int nQuality)
是将BMP格式的图片转换为JPG格式,第一个参数是BMP的文件地址,第二个参数是JPG的文件地址,我该怎样做才能引用此函数?
2011-08-29 18:42
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
哈哈 你自己的 为啥不用lib库哦  静态库 引入库都可以啊

你可以看看 核心编程 动态库编程这章节 有详细的说明

动态加载动态库也可以的,但是你的自定义函数参数类型得匹配啊

不就是字符指针么
2011-08-29 22:52
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
将LPCSTR 之类的转换了解明天了 就没什么 就是一个TCHAR*

你可以跳进去看看其相关的定义宏(右键显示定义)
2011-08-29 22:54
jidipiaoyu
Rank: 1
等 级:新手上路
帖 子:79
专家分:3
注 册:2008-12-5
收藏
得分:0 
回复 6楼 hahayezhe
谢谢,已经解决了。。。原先是想将BMP文件转换为JPG文件,整了老半天,结果发现只需要利用CImage类就可以了。。郁闷得1B
2011-08-30 10:23
快速回复:调用动态链接库dll的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025998 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved