关于C#客户端引用C++ dll的问题
近期在做项目的过程中需要在Winform客户端项目引用由C++编译的DLL,于是对相关的内容进行了一些研究,有几点心得总结如下。
第一步是制作要引用的类库:
(1)首先拿到C++的dll,需要注意的是,dll里面开发的方法必须符合C风格,不符合可以向外再封装,否则无法找到EntryPoint。
(2)然后在开始菜单按照路径 "Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示"打开Visual Studio 2008命令提示的控制台工具,
输入dumpbin -exports [C++ dll的路径],这里"C++ dll的路径"可以左键按住dll拖入控制台产生。按enter键就会出现C++ dll内公开的方法及对应的EntryPoint。
(3)这里列出类库中对登陆接口的引用,其他方法的引用与之相似。
//登录
[DllImport("RestApiClient4CSharp", EntryPoint="?login_4CSharp@@YA_NPBD000PADI@Z")]
public static extern bool login_4CSharp(string server, string login_id, string password, string license,
StringBuilder errBuf, UInt32 errBufSize);
(4)将引用的C++ dll和lib文件设置为内容始终复制。
(5)再做一些测试程序测一下,类库就制作完成了。
第二步就是Winform客户端对C#类库的引用:
这里,我碰到一个问题,明明是项目中的另一个类库项目需要引用此C#类库,可是引用之后,总是报错"找不到xxx.dll模块",后来发现,在启动项目中也必须引用一下此C#类库。
关于C#客户端引用C++ dll的问题的更多相关文章
- ocx文件转换成C#程序引用的DLL
将ocx文件转换成C#程序引用的DLL文件的办法 将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下 1.打开VS2008或VS2010命令提示符(此例用VS2008) 将o ...
- C# 动态修改dll的签名 以及修改引用该dll文件的签名
在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...
- 未能找到元数据文件“引用的DLL的路径”
使用VS的时候 偶尔会出现错误 [未能找到元数据文件“引用的DLL的路径”] 但是实际上项目中这些DLL都是做了引用的,甚至你前一天打开还是好好的,睡一觉起来 不知道什么原因 就酱紫了 原因:不详 ...
- C# 把引用的dll嵌入到exe文件中
当发布的程序有引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包... 用代码打包的实现方式也有很好,本文只是其中 ...
- WPF - 如何引用external dll中图片
前几天一直想引用别的DLL里面的一个图片.总是出现各种各样问题,一气之下将图片拷贝到当前Project中,运行良好.虽然知道引用图片,就1.2.列出来的2点就够了. 1. The Build Acti ...
- SSIS如何引用外部DLL
原文:SSIS如何引用外部DLL 当SSIS引用外部的DLL时,外部的DLL须满足以下条件: 1. DLL是强命名. 2. 加入到GAC (C:\WINDOWS\assembly),直接把DLL拉进目 ...
- ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package
目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...
- 引用第三方dll引发的问题解决
引用的程序集错误 如果引用第三方dll,调试出现引用的程序集出现错误,可以下载dependency,查看这个dll的依赖dll,如果本地电脑没有依赖dll或依赖dll出现问题,则下载或取代依赖dll ...
- 转载:C# 将引用的DLL文件放到指定的目录下
当软件引用的DLL比较多的时候,全部的DLL都放在exe同目录下,显得比较乱,如果能把dll放到响应的文件夹下面,就方便很多 下面是解决该问题的一种方法: 右键点击项目:属性->设置,项目会生成 ...
随机推荐
- Cocos2d-x项目移植到WP8系列之四:文件操作
原文链接: http://www.cnblogs.com/zouzf/p/3972457.html 读写文件Cocos已经用fopen fwrite来做好了,这里说的主要是文件和文件夹的创建.删除.判 ...
- C++11 里lambda表达式的学习
最近看到很多关于C++11的文档,有些是我不怎么用到,所以就略过去了,但是lambda表达式还是比较常用的,其实最开始学习python的时候就觉得lambda这个比较高级,为什么C++这么弱.果然C+ ...
- 时间插件之My97DatePickerBeta
My97DatePickerBeta使用很简单 1.在jsp页面中 引入JS 下载地址:链接: https://pan.baidu.com/s/1bp5uzuv 密码: ya9a <script ...
- linux基础(5)-用户及权限
用户与组 用户:使用linux时,需要以用户的身份登陆 组 :用来方便组织管理用户 用户种类 -root用户(ID为0的用户为root用户) -系统用户(1-499) -普通用户(500以上 ...
- keystone cache
http://docs.openstack.org/juno/config-reference/content/section_keystone.conf.html http://docs.opens ...
- Nagios的基本安装配置
//////////////////////nagios//////////////////////nagios原理:http://www.linuxidc.com/Linux/2013-11/927 ...
- JS实现百叶窗效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 关于Javascript没有块级作用域和变量声明提升
Javascript是没有块级作用域的,在语句块中声明的变量将成为语句块所在代码片段的局部变量.例如: if(true){ var x=3; } console.log(x); 结果输出3. 再如: ...
- 隔行换色(WPF DataGrid 标准例子)
<DataGrid AlternationCount="2"> <DataGrid.RowStyle> ...
- servlet cannot be resolved to a type解决办法
工程里的路径权限高,eclipse并到classpath里寻找jar位置. 项目名-->右键 Property-->选择 Build Path-->选择 Configure Buil ...