专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Windows Mobile

C#调用ATL,MFC,标准DLL的有关问题

发布时间:2010-05-30 01:00:37 文章来源:www.iduyao.cn 采编人员:星星草
C#调用ATL,MFC,标准DLL的问题
最近在弄WP7调用非托管代码的问题。

我在VS2008中建立了ATL Smart Device Project,然后编译出的DLL在WM和WP7上都是可以用的。

然后我建立了一个Win32 Smart Device Project,选了一个空项目,自己加入.h和.cpp,
C/C++ code

extern "C" __declspec(dllexport) int AddMethod(int nNum1,int nNum2);  


通过DllImport在WM上可以使用,WP7上不能使用,因为WP7必须要COM组件。 

第一个问题就是,在创建Win32 Smart Device Project时,如果不选择空项目,会包含一个DllMain的DLL入口方法,请问这个入口方法具体干嘛?因为前面建的空项目没有这个方法也能被WM调用。

第二个问题是,在创建Win32 Smart Device Project时,还有ATL的选择,说是build in ATL库,请问这个有什么用?ATL项目与偶什么区别

第三个问题是,如果比如我创建了一个MFC Smart Device Project后,里面定义了一个类,我在这个类中写入了一个Add方法,如何让WM上能调用到这个类的方法? 是否还是使用DllImport,那应该怎么写呢?因为方法是包含在类中。

平时工作并不涉及到C++写COM和MFC,只是在弄WP7调用DLL时对这有写疑问,想了解一下。

------解决方案--------------------
探讨
引用:
3,这个比较麻烦,成员函数必须得是虚函数:

C/C++ code


class _declspec(dlle……


恩,很感谢。那要如何调用呢?我看.NET互操作的书上也只有介绍和WIN32 DLL,或者COM交互。

------解决方案--------------------
不好意思,误导了,那个虚函数的说法,因为c/c++程序使用dll类中的非虚函数后,在编译的时候必须要有dll导出的lib文件,不然编译通不过。
===============

类的成员函数在汇编这个层面来看,其实也只是个普通的函数,跟类是没有关系的,不过在dll导出表里附加了一串符号而已,你要用Dependency等工具查看它具体的导出名之后,跟普通导出函数一样的使用就行:
http://www.jumbotcms.net/html/xinde/201006/16/159.shtml
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: