从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍“C#调用C++的坑分析”,在日常操作中,相信很多人在C#调用C++的坑分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#调用C++的坑分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:成都LED显示屏等网站设计、网络营销推广解决方案、网站设计等建站排名服务。
一般来说,C#调用C++生产的dll,如下:
C++的项目要设置为"导出dll的项目",而且导出的函数,一般为:
extern "C" __declspec(dllexport) int Convrnx(int format, rnxopt_t opt, char *file, char **ofile){ ....}
弄出一个C++的dll后,放到C#的生成目录下,也就是和.exe放在一起;
而C#,则要:
[DllImport("RtklibHelper.dll", EntryPoint = "Convrnx", CallingConvention = CallingConvention.Cdecl)]public static extern int Convrnx(int format, rnxopt_t opt, string file, string[] ofile){ ....}
坑一:C#的类型,怎么和C++的类型对应起来(如例子:string对应*char,string[]对应char**)
解一:有一款神奇的工具,名为:CLRInsideOut,微软的手笔:
比如说:C++ 中的结构体 rnxopt_t ,其中又嵌套结构体snrmask_t等等,只需要将其用txt自上而下整理好(C++的声明写在前后很讲究),右边直接为C#代码;
坑二:在本机C#调用C++一切都正常,放到别的机器就有:找不到指定的模块。(异常来自 HRESULT:0x8007007E) ,各种搜索尝试都不行(包括尝试安装Vs c++环境)。
程序员的直觉:肯定是C++产出的dll,调用了系统的dll,而别的电脑又不一定有。
思路:找出这个dll,到底调用了什么东西
解二:又是使用微软的工具:
找到了,就是这些dll;
程序员的直觉:这个东西,绝逼是在c:\window下的,搜索一下,发现:WINMM.dll在两个文件夹都有,到底是哪个?
解:只需要到别的电脑搜一下,那个缺少就拷贝那个
全部揪出来:
然后放到和exe相同的目录下;(按照C++ dll的习惯,动态库总会在当前目录和系统目录中找,所以没必要一个个放到目标电脑对应的文件夹中)
到此,关于“C#调用C++的坑分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图