C#如何调用这样封装的c++DLL

 我来答
greystar_cn
2018-06-07 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部

最近做到的项目都会用到C++封装DLL给C#调用,比如说将识别对象的形状跟颜色,通过Opencv处理返回结果给C#,这里要将Opencv图像处理部分封装成DLL;还有根据厂家提供的摄像头SDK的内容(C++),抽取里面需要的封装成DLL给C#调用!封装的DLL调试是比较蛋疼的,在这就里个人觉得有几点经验是比较实用的,总结如下:

1.首先记得修改项目属性:如下:


2.因为不确定问题出在哪一个函数,所以只能根据猜测在相应的位置进行文本日志写入或是进行弹对话框的方式。参考代码如下:

  • //#include   

  • //写本地日志  

  • void savefile(CString  filename, char * info)  

  • {  

  • //将内容写至本地保存起来。。。  

  • int j = 0;  

  • char ch[1000] = { 0 };  

  • SYSTEMTIME sys;  

  • GetLocalTime(&sys);  

  • j = sprintf(ch, "%s", info);  

  • j += sprintf(ch + j, "\r\ntime:%02d/%02d %02d:%02d:%02d.%03d \r\n", sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);  

  • CFile file;  

  • file.Open(filename, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate, NULL);  

  • 在原来的基础上追加内容!  

  • file.SeekToEnd();  

  • //覆盖  

  • //file.Write(info, strlen(info));  

  • file.Write(ch, j);  

  • file.Close();  

  • }  

  • //对话框  

  • int ID = 0;  

  • CString cs;  

  • cs.Format("%i", ID);  

  • MessageBox(NULL, cs, NULL, 0);  

  • char * info = "Hello World!"  

  • MessageBox(NULL, info, NULL, 0);  

昳尚键1
2018-06-08 · TA获得超过954个赞
知道大有可为答主
回答量:3631
采纳率:92%
帮助的人:244万
展开全部
解决办法:
1、下载缺少的dll文件,复制到c:\windows\system32文件夹下;
2、按win+r,输入regsvr32 /s 该文件文件名XX.DLL,点击确定;
3、弹出提示信息框,提示注册成功,点击确定即可。
4、用腾讯电脑管家电脑诊所--搜 缺失dll文件--立即修理
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式