C#调用dll

本文介绍了一个简单的C与C#之间的跨语言DLL调用示例,包括如何在C中定义函数并导出供C#使用,以及在C#中如何通过DllImport导入C中的函数进行调用。
#include <stdio.h>
#include <string.h>
extern "C" __declspec(dllexport)int TCharParm(char* in,int len,char* out){
	memset(out,0,4);
	memcpy(out,in,len);
	return 0;
}
extern "C" __declspec(dllexport)int tl_add(int a,int b){return a+b;}

  

set PATH=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\;
set LIB=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\;C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86\;
del Test.dll
cl /c Test.cpp
link /dll Test.obj
del Test.obj,Test.exp,Test.lib
pause

  

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.ComponentModel; 
using System.Data; 
using System.Drawing;

public class M{
	[DllImport("Test.dll")] 
	public static extern int TCharParm(String iin, int len, StringBuilder oout);
	[DllImport("Test.dll")] 
	public static extern int tl_add(int a,int b);

	static void Main(string[] args){
		StringBuilder b = new StringBuilder(4);
		TCharParm("CDE",3,b);
		Console.WriteLine(b.ToString());

		Console.WriteLine(tl_add(1,2).ToString());
	}
}

  

set fileName=M.exe
set cscFile=C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
if exist %fileName% del %fileName%
@rem	pause
%cscFile% /out:M.exe /recurse:*.cs /platform:x86
M.exe
pause

  

 

转载于:https://www.cnblogs.com/jiangjieqim/p/4585709.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值