VS2012环境下C#调用C++生成的DLL
1.VS2012 C++生成DLL
这个过程仿照http://www.cnblogs.com/LCCRNblog/p/3625200.html创建DLL即可,暂时不用创建测试工程,因为下面有测试工程的创建。
注意:这个DLL工程建好后,需要额外添加以下工作:
在Test->添加->新建项->C++ ->代码模块定义文件(.def)->Source.def
在Source.def文件中写入如下内容(def中的注释在VS2012中必须去掉,此处是为了解释):
LIBRARY Test//dll文件名
EXPORTS //列出需要导出的函数名
Add @
Subtract @
Multiply @
Divide @
然后生成解决方案,到此dll文件创建ok!
2.C#使用C++生成的dll
这个工程仿照http://www.cnblogs.com/LCCRNblog/p/3691704.html中的第2步,使用dll创建一个UseDll工程;
在program .cs文件添加如下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;//使用DllImport需要这个头文件 namespace UseDll
{
class Program
{
[DllImport(@"C:\Users\LC\Desktop\Test.dll")]//这种方式可以不用将dll文件放到工程目录,直接引用文件所在路径即可
public static extern double Add(double a,double b);
[DllImport("Test.dll")]//这种方式必须将dll文件放到工程目录bin\debug下
static extern double Subtract(double a, double b);
[DllImport("Test.dll")]
static extern double Multiply(double a, double b);
[DllImport("Test.dll")]
static extern double Divide(double a, double b); static void Main(string[] args)
{
if (args.Length != )
{ Console.WriteLine("Usage: MyClient <num1> <num2>"); return; } double result = Add(1.1, 2.2);
Console.WriteLine("The result of add is {0}",result); double result1 = Subtract(1.1, 2.2);
Console.WriteLine("The result of Subtract is {0}", result1); }
}
}
3.运行结果如下

VS2012环境下C#调用C++生成的DLL的更多相关文章
- windows和linux环境下java调用C++代码-JNI技术
最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...
- c++调用matlab生成的Dll动态连接库
点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台: matlab 7.0(R ...
- C#调用Matlab生成的Dll
问题描述:最近开发需要调用matlab生成的DLL,在New MWNumericArray 对象的时候报错,提示未将对象引用到对象的实例. 问题分析:因为MWArray.dll是Matlab提供的DL ...
- #Lua:Lua调用C++生成的DLL库
Lua调用C++生成的DLL库 本文参考了某大佬的博客,写得十分详细,推荐!!! 需求: 在之前的求解器中添加了Lua库,使得程序可以在Lua脚本中实现自定义函数功能,考虑到未来可能需要与第三方程序库 ...
- C++调用C#生成的DLL文件的各种问题
C++调用C#生成的DLL文件: 首先选择建立一个C#的类库,然后再按照需求编写需要的函数 之后,对于C++调用过程需要注意的几点: 1.使用#using <....some.dll>指出 ...
- 示例 - 如何在NodeJS中调用SS生成的DLL
要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS. EdgeJS: http://tjanczuk.github.io/edge/ 如果你还不知道如何在SS中生成DLL, 请查看: S ...
- 【Tesseract-OCR】在VS2012环境下调用API方法---注意避免名字冲突
由于在VS2012中使用OpenCV可以得到插件ImageWatch.vsix的支持,查看图像非常方便,所以一直想在VS2012环境下把Tesseract-OCR融合进来,但是这一错误折腾了我好久: ...
- php调用C#生成的dll(二)
根据上一篇博文,php调用c#生成的动态库,运行测试时报Fatal error: Class 'COM' not found in XXXXXXXXX 原因是php.ini中未开启COM组件的应用,解 ...
- Java採用JNI调用VC++生成的dll(Java与C++交互)
应项目需求,须要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组须要和C++和Android进行交互.以下是java和C++採用JNI的方式进行 ...
随机推荐
- CentOS7下安装MariaDB
环境:Window10 上建立 VMWare 虚拟机,EasyInstaller 方式安装 CentOS 7 1. “失败”的经历 备份原 repo 文件,并更改 yum 源(方法详见修改yum源)为 ...
- nmap扫描某段网络连通性
nmap -v -sP 10.0.10.0/24 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测): nmap -sP 192.168.1.0/24 仅列出指 ...
- 如何解决conda install:command not found问题
每次运行conda相关代码之前先做一遍source ~/.bashrc.即可
- Pro Flight YOKE 设备键位映射踩过的坑
背景 VR游戏项目.街机游戏项目7月阶段版本快要结束了,考虑到带有键鼠外设显得逼格比较Low,所以决定采用"高大上"的专业设备来进行游戏操作. 需求 需要将键盘鼠标操作的18个键位 ...
- CodeForces 242E二维线段树
E. XOR on Seg ...
- JSP获取input(含正则表达式)
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> < ...
- 系统出现异常: too many values to unpack (expected 2)
先感谢[ValueError: too many values to unpack](http://leonzhan.iteye.com/blog/1720315)系统出现异常:打开太多值(预期2)这 ...
- Ubuntu16.04 install jdk-8u144-linux-x64.tar.gz
打开终端: Ctrl+Alt+T 下载jdk: wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b ...
- DSCP 与IP 优先级IP优先级
在IPv4的报文头中,TOS字段是1字节,如下图所示.根据RFC1122的定义,IP优先级(IPPrecedence)使用最高3比特(第0-2比特).+++++++++++++++++++++++++ ...
- YYModel学习总结YYClassInfo(1)
OC的run-time 机制,简直像是网络上的猫! 我在开发中很少用到,但是作为iOS开发 人家肯定会问这个东西,所以深入的学习了下. 对于 run-time的入手,YYModel的学习,简直让人美滋 ...