关于规则dll与mfc扩展dll的区别
本人是非软件毕业的,最近在看mfc,目前遇到了一个难题,还希望内行人给讲解一下。我知道规则的dll可以被任何语言调用,它只可以导出函数,而不可以导出类。mfc扩展dll不...
本人是非软件毕业的,最近在看mfc,目前遇到了一个难题,还希望内行人给讲解一下。我知道规则的dll可以被任何语言调用,它只可以导出函数,而不可以导出类。mfc扩展dll不但可以导出函数,还可以导出类,问题是网上好多人说,mfc扩展dll只能被mfc”调用”——这里说的调用是不是导出的类只能被mfc调用,而函数还是可以被其他语言调用的?这个问题我是查过资料才问的,如果不懂就不要粘贴了!
展开
1个回答
2013-08-14
展开全部
准确地说,如果你导出的是MFC的类,那这个导出类就真只能被MFC调用了
如果你是导出的是普通的C++类,那么调用者不一定要是MFC程序啊,普通的程序也可以,反正是用VC++写的都行,因为你导出的时候它会生成一个lib,里面保存了函数名各种信息,VC++都能识别的,跟MFC没关系
所以说,网上的一些说法有点片面,MFC扩展DLL,他们都把它认为是这个DLL都只导出MFC的类了,其实这是不对的,它除了可以导出MFC类,还可以导出非MFC类,导出方法还是一样,只不过这个类不是继承CObject,而是你自己定义的类;如果导出的函数是C标准那种,那么这个扩展的MFC DLL其实一样可以被其它语言调用的
说得有点啰嗦了,希望你能理解;最后偷偷告诉你吧,其实无论你导出什么函数,其它语言一样都可以调用的,只不过那个函数名就比较怪,会有一大堆修饰,例如可能是??AddNum@@QAE@XZ,只要是名字对了,都是可以调用的
如果你是导出的是普通的C++类,那么调用者不一定要是MFC程序啊,普通的程序也可以,反正是用VC++写的都行,因为你导出的时候它会生成一个lib,里面保存了函数名各种信息,VC++都能识别的,跟MFC没关系
所以说,网上的一些说法有点片面,MFC扩展DLL,他们都把它认为是这个DLL都只导出MFC的类了,其实这是不对的,它除了可以导出MFC类,还可以导出非MFC类,导出方法还是一样,只不过这个类不是继承CObject,而是你自己定义的类;如果导出的函数是C标准那种,那么这个扩展的MFC DLL其实一样可以被其它语言调用的
说得有点啰嗦了,希望你能理解;最后偷偷告诉你吧,其实无论你导出什么函数,其它语言一样都可以调用的,只不过那个函数名就比较怪,会有一大堆修饰,例如可能是??AddNum@@QAE@XZ,只要是名字对了,都是可以调用的
追问
谢谢你的详细回答,其实在导出函数时,定义一个def模块,在里面声明导出函数,这时导出的函数不会变名。
追答
对的,可以用def把名字重新定义
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询