1、C#下分别调用C++生成的dll文件
第一步,新建项目
选择 Win32控制台应用程序或者Win32项目均可
点击“确定”后,选择DLL 和 空项目,点击“完成”
添加文件“MyDll.h” “MyDll.cpp”
#pragma once
#define EXEAPI extern "C" __declspec(dllexport) // C方式导出函数
EXEAPI int AddValue(int x, int y);
#include "MyDll.h"
#include <stdlib.h>
//求两个值得和
int AddValue(int x,int y)
{
return x + y;
}
编译生成 Win32Dll.dll
第二步 重新建立C# win32 项目 MyDllDemo ,添加新类class DllTest
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.IO;
namespace MyDllDemo
{
class DllTest
{
const string dllpathfile = "Win32Dll.dll";
[DllImport(dllpathfile, EntryPoint = "AddValue", CallingConvention = CallingConvention.Cdecl)]
public static extern int AddValue(int x, int y);
}
}
class Program 中调用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace MyDllDemo
{
class Program
{
static void Main(string[] args)
{
int result = DllTest.AddValue(2, 3);
Console.WriteLine(result);
Console.ReadKey();
}
}
}
编译运行
2、C#下分别调用C#生成的dll文件
第一步,建立C#类库CSharpClassLib,建立新类 TestClass
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpClassLib
{
public class TestClass
{
public void Hello()
{
Console.WriteLine("Hello World!");
}
}
}
第二步,上述编译生成CSharpClassLib.dll,将其拷贝到MyDllDemo 项目的debug的bin下,然后在MyDllDemo 项目下添加 “引用”,将此dll引用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.IO;
using CSharpClassLib;
namespace MyDllDemo
{
class Program
{
static void Main(string[] args)
{
TestClass test = new TestClass();
test.Hello();
Console.ReadKey();
}
}
}
第三步,编译执行