社区
ATL
帖子详情
ATL工程调用 MFC dll导出函数的问题
gccflag
2009-07-03 05:32:56
现有历史遗留的 MFC dll,有一个导出函数接口。
编写一个ATL 简单对象组件(也是动态库),调用这个MFC dll的接口,能够调用成功。
但是 其它语言 如VB和 网页中调用就不能成功。同时怎么样把这个ATL组件做成多线程的?
...全文
176
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
atl
dll
调用
wtl http://blog.csdn.net/dragoo1/article/details/8896381
ATL
封装
MFC
对话框
创建
ATL
工程
,将
MFC
对话框封装进
ATL
中,并在实例程序中
调用
此对话框,相比
MFC
的
DLL
,减少了好多操作。不用手动切换主程序和
Dll
的状态,非常方便。
MFC
下
DLL
编程(图解)
三种类型的
DLL
创建,非常详细的Demo
MFC
ATL
示例 在
MFC
服务器中使用
ATL
COM对象
MFC
ATL
示例 在
MFC
服务器中使用
ATL
COM对象
在
ATL
服务器
DLL
嵌入
MFC
GUI接口.rar
在
ATL
服务器
DLL
嵌入
MFC
GUI接口
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章