C#调用C(C++)dll,针对结构体的微软小工具
来源:互联网 发布:淘宝直播ipad可以看吗 编辑:程序博客网 时间:2024/05/15 07:12
相信大家在用C#调用C(C++)dll时会被数据封送搞的晕天转地……下面列举一下头大的事,在CSDN另一博客摘引的。
源地址:http://blog.csdn.net/Donjuan/article/details/3865026
1. 如果你的结构体里面包含 TCHAR字符串成员的话,需要考虑ANSI和Unicode DLL的情形。
2. 如果你的结构体里面包含数组成员,需要考虑定长的数组,而不是对应C#数据类型。
3. 如果你的结构体里面包含联合体(UNION),需要使用Explict选项,如果联合体里面又包含结构体。
4. 你还要考虑你的结构体可以同时在32位和64位机上运行。
5. 你还要考虑C编译器对结构体所作的PADDING的优化。
6. 你还要考虑在.NET里面对结构体的优化,例如CLR会将一些.NET struct的成员的次序变换—以便更有效地利用内存。
7. 如果你的结构里面还包含了其他的结构体。
8. 如果你的结构体里面还包含函数指针……
9. 如果你的结构体里面包含函数指针数组。
10.如果你的结构体里面包含了指针……
11.如果你的结构体里面有一些成员是被所调用的C函数所设置的。
12.CLR提供了几种结构体的布局选项,什么Auto,什么Explicit,什么Sequential
13.有的结构体的情况是上面说的情形的综合,想想我们的VARIANT结构吧。
如何头大吗?想杀死B-G吗?想放弃调用dll吗?其实这很正常的,就连微软自己都被自己的数据封送搞的头大,因此他们就出来一个针对数据封送的小工具
P/Invoke Interop Assistant
下载地址:http://download.csdn.net/detail/cumtwys/7699425 0分资源
好这个工具隆重出场了,下面简单介绍一下用法,安装完成之后,运行winsiggen.exe,界面如下,选择【SigImp Translate Snippet】:
在【Native Code Snippet】内输入你的需要转换的代码(如结构体等),然后点击Generate,便生成了C#的封送格式OK!还是蛮好用的!效果如下:
怎么样不错吧……只不过自动生成C#代码自动添加了引用的空间,如果在cs文件的开头使用了using的话完全可以去掉,太碍眼了……
而且通过这个工具也解决了上一篇文章中关于整形数组和字符数组封送格式的疑问……
- C#调用C(C++)dll,针对结构体的微软小工具
- C# 调用C++dll中的结构体的定义
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用C++dll 结构体参数传递问题
- C#调用C++dll 结构体参数传递问题
- C#调用C的DLL
- mapper.c 小工具
- mapper.c 小工具
- c语言小工具
- C#调用带结构体指针的C Dll的方法
- C#调用C++DLL传递结构体数组的终极解决方案
- c#调用C/C++ DLL,传入指针数组(指针指向自定的结构体)
- C#调用C++DLL
- C#调用C++dll
- iOS开发项目篇—52cell点击事件的处理
- 认识Java培训机构高级课程
- HDU 1873看病要排队
- 解决Android软键盘挡住登录按钮的问题!
- 一个更为详细的MyBatis(3.2.3)示例
- C#调用C(C++)dll,针对结构体的微软小工具
- 台风体验
- 异步I/O
- Eclipse下查看jdk源代码
- 小心StringBuilder.toString
- 假广告
- ArcGIS教程:栅格计算器的工作原理
- 融入了最新的Java应用技术的洞察
- OTSU算法及其改进算法学习