C#调用C/C++ dll文件 的简单示例

测试环境:VS2010 windows7

1.文件->新建项目,选择win32 控制台程序,输入项目名称dll_test,然后点击确定

2.

3.点击下一步

4.选择dll 点击完成 ,点击dll_test.cpp 文件

extern "C"  __declspec(dllexport) int add(int a,int b);
int add(int a,int b)
{
	return a+b;
}

说明:(这里是.cpp 文件不是.c 文件,所以要加extern “C”) __declspec(dllexport)这里语法规定。至于dllmain.cpp 文件下的DllMain,这里可以不必理会。具体可以查看MSDN。

4.按上面要求编写程序,点击生成

5.可以看到生成成功

6这样我们的dll文件就生成成功了。可以在项目Debug文件夹下查看dll文件

可以使用depends 这个工具来查看dll文件的函数情况,在File->openfile 打开你的dll文件,可以看到Function为add与我们写的一样,如果不一样,说明dll有问题。

7.再建立一个C# 选择Windows 窗体应用程序,点击确定

8. 将刚刚生成的dll文件放到bin目录下的Debug文件下(注意不要放错了,放错会提示找不到),

[DllImport("dll_test.dll",EntryPoint =
"add",CallingConvention =
CallingConvention.Cdecl)]

public
static extern int add(int a,
int b);

注意: public static extern 的写法,后跟的你要导入函数返回值以及函数名。

第一参数表示要加载的dll文件名

EntryPoint 表示函数入口点,即:函数名

使用DllImport 需要在程序上面添加 :using System.Runtime.InteropServices;

这里就可以再C#中调用C/C++的dll文件了。

9 运行程序:

时间: 2024-10-10 04:29:23

C#调用C/C++ dll文件 的简单示例的相关文章

.Net 环境下C# 通过托管C++调用本地C++ Dll文件

 综述 : 本文章介绍.Net 环境下C# 通过托管C++调用本地C++ Dll文件, 示例环境为:VS2010, .Net4.0, Win7. 具体事例为测试C++, C#, 及C#调用本地C++Dll文件进行浮点运算效率的一部分. 如果需要查看三者的效率, 请继续阅读下面的文章. a 创建本地CPP类库 1. 创建本地CPP的Dll ---->EfficiencyNativeCPPDLL 2. 点击下一步 注意选择为DLL(D)项, 然后选择完成. 3.书写DLL文件 3.1 Efficie

python调用c的dll文件

这个问题研究了好久,看了n个博客,但是一直出错,主要集中在生成dll的时候,自己生成的总是不可执行,今天无意间看到了一个,发现正好可以解决我的问题,分享给大家http://blog.sina.com.cn/s/blog_62c832270101d92u.html 里面有一个没有搞懂的地方,就是CDll里面对于生成的dll的填写,我已经把它放在python目录Dlls下了,可是还要写全路径才对,此问题求解. 关于调用c++的目前没有发现什么好的办法.

delphi 基础之三 编写和调用dll文件

delphi 编写和调用dll文件   Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs).一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数. 在如下几种情况下,调用DLL 是合理的: 1) 不同的程序使用相同的DLL ,这样只需要将DLL 在内存中装载一次,节省了内存的开销. 2) 当某些内容需要升级的时候,如果使用DLL 只需要改变DLL 就可以了,而不需要把整个程序都进行变动. 3) 由于DLL 是独立于语言的,所以,当不同语言习惯的人共同开

通过COM组件方式实现java调用C#写的DLL文件

通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取工程名 注:WIN7以上系统VS必须以管理员身份启动!!!!! 2.右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾(或者:项目->TestDemo属性->应用程序->程序集信息->使程序集com可见,打上勾) 注:1.创建工程的时候,NET Fr

反病毒攻防研究第009篇:DLL注入(上)——DLL文件的编写

一.前言 我之前所编写的用于模拟计算机病毒的对话框程序都是exe文件,所以运行时必将会产生一个进程,产生进程就非常容易被发现.而为了不被发现,可以选择将对话框程序创建为DLL文件.这种文件会加载到已有进程的地址空间中,这样就不会再次创建出进程,隐蔽性相对较好,DLL注入也是恶意程序总会使用的手段.这次我带算用几篇文章的篇幅来论述DLL注入的问题,而这篇文章就首先来讨论一下如何把我之前的对话框程序改写为DLL文件. 二.编写对话框DLL程序 这里我依旧使用VC++6.0,创建一个简单的Win32

[转载]解析WINDOWS中的DLL文件---经典DLL解读

在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧!  初窥门径:Windows的基石 随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的“动态链接库”,DLL是Dynamic Link Library(即“动态链接库”)的缩写.从Microsoft公司推出首个版本的Windows以来,动态链接库就一直是这个操作系统的基础. 1.看看DLL里有什么 与其用晦涩的专业术语来解决DLL是

DLL文件的引用

首先我们先要写一个DLL文件: 我先创建一个win32的DLL工程,在工程中添加了Math.h和Math.cpp文件,具体内容如下: Math.h: #pragma once #include "stdafx.h" #ifdef API_EXPORT #define DLL_EXPORT _declspec(dllexport) #else #define DLL_EXPORT _declspec(dllimport) #endif DLL_EXPORT int Add(int x,

(转)使用.NET Reflector 查看Unity引擎里面的DLL文件

当你查看unity里面API的时候,是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?很是不爽吧. 这种问题我也是经常碰到.这是人家商业引擎不想让你看到底层代码啦,所以着急不得. 不过,今天我终于有了办法解决这个问题.那就是使用反编译DLL文件!简单,粗暴.不过为了了解底层的结构,这也不失为一种办法哦. OK!啰嗦了半天,让我带你进入今天的主题吧. 1.首先下载.NET Reflector 8.3.3.115.(如果链接失效,请告诉我哦.里面还有一个插件可以导出cs文件) 2.双击安装Ref

C#调用Delphi的dll之详解

C#调用Delphi接口方法,有两种解决办法: 一.将Delphi程序编译成一个COM组件,然后在C#里引用COM组件. 二.非托管调用Dephi的DLL文件. 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport. DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.     DllImpor