社区
ATL
帖子详情
ATL工程调用 MFC dll导出函数的问题
gccflag
2009-07-03 05:32:56
现有历史遗留的 MFC dll,有一个导出函数接口。
编写一个ATL 简单对象组件(也是动态库),调用这个MFC dll的接口,能够调用成功。
但是 其它语言 如VB和 网页中调用就不能成功。同时怎么样把这个ATL组件做成多线程的?
...全文
172
9
打赏
收藏
ATL工程调用 MFC dll导出函数的问题
现有历史遗留的 MFC dll,有一个导出函数接口。 编写一个ATL 简单对象组件(也是动态库),调用这个MFC dll的接口,能够调用成功。 但是 其它语言 如VB和 网页中调用就不能成功。同时怎么样把这个ATL组件做成多线程的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gccflag
2009-07-03
打赏
举报
回复
这个被ATL封装的MFC dll 的导出函数使用了前面一位说的 AFX_MANAGE_STATE(AfxGetStaticModuleState());
本身又调用了其它一些常规MFC dll。
这些常规dll里面含有很多全局变量。有没有办法把调用ATL组件的客户做成多线程的?可以使用套间实现这个多线程吗?
gccflag
2009-07-03
打赏
举报
回复
用VB调用时能够创建对象,但调用接口时提示AccessInvalid内存错误。
我前两个参数传入的是String型,后面那个用的是Long型(听说VB的Long是32位的)。VB代码如下:
Dim sz1 As String
sz1 = "1000.00"
Dim sz2 As String
sz2 = "0755005"
Dim iRes As Long
iRes = -1
Set obj = CreateObject("ClassA.Method1") 'ProgID
obj.IdentifyBill sz1, sz2, iRes
Set obj = Nothing
fengrx
2009-07-03
打赏
举报
回复
如果对话框上又调用了OCX等于组件了,需要加入三句:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CoInitialize(NULL);
AfxEnableControlContainer();
fengrx
2009-07-03
打赏
举报
回复
mfc导出的DLL如果有对话框等资源,在函数前面要加:AFX_MANAGE_STATE(AfxGetStaticModuleState());
fengrx
2009-07-03
打赏
举报
回复
接口定义没有问题。
楼主调用不成功是什么现象呢?
gccflag
2009-07-03
打赏
举报
回复
这是添加的接口
STDMETHODIMP CClassA::Method1(BSTR sz1, BSTR sz2, int *iResult)
这个接口内部调用一个MFC dll导出的函数。这个函数接收前两个参数然后弹出对话框。对话框结束后返回值给输出参数
这是接口的定义
[id(1), helpstring("method Method1")] HRESULT Method1([in] BSTR sz1,[in] BSTR sz2, [out] int* iResult)
fengrx
2009-07-03
打赏
举报
回复
[Quote=引用 2 楼 gccflag 的回复:]
现在是用的ATL封装成了简单组件,在ATL的内部调用的MFC dll。
用VC可以调用这个组件的接口,但是用VB调不了
[/Quote]
楼主需要确认是ATL提供的接口问题,还是接口没问题,而是在ATL内部运行调用DLL部分出错。
可能出错的地方:ATL的接口参数类型问题。
楼主把代码帖下吧。
gccflag
2009-07-03
打赏
举报
回复
现在是用的ATL封装成了简单组件,在ATL的内部调用的MFC dll。
用VC可以调用这个组件的接口,但是用VB调不了
oyljerry
2009-07-03
打赏
举报
回复
可以用ATL封装成ActiveX,内部调MFC dll,这样网页,VB等就可以调用了
atl
dll
调用
wtl
6. **考虑
导出
函数
**:在
ATL
DLL
中,可能需要定义一些
导出
函数
,这些
函数
用于初始化、创建或销毁使用WTL的对象。
调用
者通过这些
导出
函数
与
DLL
进行交互。 7. **错误处理和资源管理**:确保正确处理错误,并在适当的...
ATL
封装
MFC
对话框
在实现`IMyDialog`接口的`ShowDialog()`方法时,你可以
调用
MFC
对话框的`DoModal()`
函数
来显示对话框。这将使得
ATL
COM对象能够控制
MFC
对话框的生命周期,从而在非
MFC
环境中使用。 最后,在你的实例程序中,通过...
MFC
下
DLL
编程(图解)
通过本文的介绍,我们了解了
MFC
环境下
DLL
的基本概念及其与静态链接库的区别,学习了如何根据需求选择合适的
DLL
类型以及如何在
MFC
环境下
导出
函数
。此外,还提供了创建规则
DLL
的具体步骤以及如何在其他应用...
MFC
ATL
示例 在
MFC
服务器中使用
ATL
COM对象
- `
mfc
atl
dl.cpp` 和 `
mfc
atl
dl.h`: 这两个文件可能包含了
MFC
动态链接库(
DLL
)的部分实现,其中`
mfc
atl
dl.cpp`包含具体的实现代码,而`
mfc
atl
dl.h`定义了接口和类声明。 - `
mfc
atl
.cpp` 和 `
mfc
atl
.h`: 可能是
MFC
...
在
ATL
服务器
DLL
嵌入
MFC
GUI接口.rar
6. 创建和初始化GUI:在
ATL
对象的构造
函数
中创建
MFC
窗口,并在
DLL
加载时初始化控件。 7. 暴露接口:为了使其他应用程序能够访问这个GUI接口,你需要在
ATL
的接口中定义适当的
函数
,允许外部
调用
者创建、显示和控制...
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章