社区
C++ 语言
帖子详情
win32 dll调用MFC dll的问题.
yongziqd
2011-07-12 10:30:18
前提: 有个第三方dll,是用MFC编译的.我自己用win32编译了一个dll,里面调用这个第三方dll.
问题: LoadLibrary没有问题,用GetProcAddress获取函数地址没有问题,调用函数的时候出错.
如果调用的函数没有参数没有问题,如果调用的函数有参数,则会出错.
请教高手,这有可能是哪个地方出了问题?
...全文
538
39
打赏
收藏
win32 dll调用MFC dll的问题.
前提: 有个第三方dll,是用MFC编译的.我自己用win32编译了一个dll,里面调用这个第三方dll. 问题: LoadLibrary没有问题,用GetProcAddress获取函数地址没有问题,调用函数的时候出错. 如果调用的函数没有参数没有问题,如果调用的函数有参数,则会出错. 请教高手,这有可能是哪个地方出了问题?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vrace
2011-07-13
打赏
举报
回复
似乎有参数的函数导出的时候被重命名了, LZ 用 Depends 看一看
thinkboy234
2011-07-13
打赏
举报
回复
继续顶起.
yongziqd
2011-07-13
打赏
举报
回复
继续顶起.
yongziqd
2011-07-13
打赏
举报
回复
多谢各位了,我最终还是建了个MFC的dll来调用这个dll了.
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 11 楼 ouwarmth 的回复:]
引用 8 楼 yongziqd 的回复:
引用 6 楼 ouyh12345 的回复:
调用约定是否一致?
C++默认的应该都是_cdecl吧...
把调用约定改成_stdcall试下,在你的dll里边的函数名前都加上_stdcall,如:
int _stdcall test()
{
....
return 0;
}
[/Quote]补充一点,我新建了个MFC的exe程序,调用MFC的dll,在release状态下没有问题.
在debug状态下,调用dll里面的带参数的函数,也存在和win32同样的问题.
luciferisnotsatan
2011-07-12
打赏
举报
回复
http://www.codeguru.com/cpp/w-p/dll/importexportissues/article.php/c123/
调用C++风格的dll
wkq87
2011-07-12
打赏
举报
回复
帮顶吧,一般都是MFC里面调用DLL,所以没出现类似问题
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 11 楼 ouwarmth 的回复:]
引用 8 楼 yongziqd 的回复:
引用 6 楼 ouyh12345 的回复:
调用约定是否一致?
C++默认的应该都是_cdecl吧...
把调用约定改成_stdcall试下,在你的dll里边的函数名前都加上_stdcall,如:
int _stdcall test()
{
....
return 0;
}
[/Quote]也不行
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 10 楼 dizuo 的回复:]
用dumpbin -exports/depends看看里面有哪些函数。。。
[/Quote]里面的函数都知道...
ouwarmth
2011-07-12
打赏
举报
回复
[Quote=引用 8 楼 yongziqd 的回复:]
引用 6 楼 ouyh12345 的回复:
调用约定是否一致?
C++默认的应该都是_cdecl吧...
[/Quote]
把调用约定改成_stdcall试下,在你的dll里边的函数名前都加上_stdcall,如:
int _stdcall test()
{
....
return 0;
}
ryfdizuo
2011-07-12
打赏
举报
回复
用dumpbin -exports/depends看看里面有哪些函数。。。
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 7 楼 ouyh12345 的回复:]
参数有类的对象吗?跨模块时,传类的对象是不安全的
[/Quote]就传递的普通类型,int,char* 之类的.
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 6 楼 ouyh12345 的回复:]
调用约定是否一致?
[/Quote]C++默认的应该都是_cdecl吧...
ouyh12345
2011-07-12
打赏
举报
回复
参数有类的对象吗?跨模块时,传类的对象是不安全的
ouyh12345
2011-07-12
打赏
举报
回复
调用约定是否一致?
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 4 楼 dizuo 的回复:]
mfc编译的dll木有头文件吗?
[/Quote]没有头文件.只是一个动态库,还有一个说明文件,说明里面的函数定义.
ryfdizuo
2011-07-12
打赏
举报
回复
mfc编译的dll木有头文件吗?
yongziqd
2011-07-12
打赏
举报
回复
[Quote=引用 1 楼 atzai 的回复:]
MFC中的函数可能需要MFC库支持,你的win32程序默认不会加载MFC库。
[/Quote]我的win32程序加载没有问题,只是调用里面函数的时候出问题.
如果函数没有参数,调用正确.如果函数有参数,调用错误.
jackyjkchen
2011-07-12
打赏
举报
回复
MFC的dll不是标准格式,导入方式和普通的纯C的dll不一样吧,我尽量避免mfcdll,没用过
atzai
2011-07-12
打赏
举报
回复
MFC中的函数可能需要MFC库支持,你的win32程序默认不会加载MFC库。
加载更多回复(19)
VC编写
DLL
1.用VC建立一个
WIN32
DLL
我们利用VC编写
DLL
有几种方法.如果用VC建立一个
WIN32
DLL
工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句:_declspec(
dll
export)你当然可以把它定义成宏例如,如果是一个类STUDENT需要导出, 那么声明时应该是这样写
C#
调用
VC++6.0(
MFC
)的
DLL
一、VC++6.0(
MFC
)生产
DLL
创建工程:新建
WIN32
Dynamic-link Library工程bai,工程名为My
Dll
,选择A simple
DLL
project类型 在StdAfx.h中添加: extern "C" __declspec(
dll
export) int fun(int a, int b); 在My
Dll
.cpp中添加: int fun(int a,int b) { return a+b+5; } 编译即可生产
DLL
文件 二、C#
调用
VC++6.0的
在
DLL
中使用资源(转)
在
DLL
中使用资源 现在最常看见的关于
DLL
的
问题
就是如何在
DLL
中使用对话框,这是一个很普遍的关于如何在
DLL
中使用资源的
问题
。这里我们从
Win32
DLL
和
MFC
DLL
两个方面来分析并解决这个
问题
。 1.
Win32
DLL
在
Win32
DLL
中使用对话框很简单,你只需要在你的
DLL
中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者Crea
基于VS的
DLL
的创建和使用
A:创建目标
dll
文件 1.首先创建生成
dll
的项目,两种途径,基于
MFC
和基于
Win32
控制台应用程序(示例) 2.文件->新建->项目->
win32
控制台应用程序,程序类型选择
DLL
,勾选为空项目 3.菜单栏项目->添加头文件,myAPI.h代码如下 #ifndef _
DLL
_API #define _
DLL
_API _declspec(
dll
export)...
MFC
/Qt下
调用
caffe源码(一)---将caffe源码生成动态链接库
dll
本人研一,最近想将用caffe训出的模型,通过
MFC
做出一个界面,扔进一张图片,点击预测,即可
调用
预测分类函数完成测试,并且通过MessageBox弹出最终分类的信息。 首先通过查资料总结出两种方法,第一:直接
调用
编译好的caffe源码;(本次用到的源码是classification.cpp) ...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章