使用MingW生成dll
使用GCC生成dll文件
为什么要使用MingW呢?其实主要还是使用Gcc,在Windows下主要有Mingw和Cywin,这里使用Mingw,因为Gcc在生成动态库,依赖项比较少,不像在VS生成依赖特定VC库版本.在某些没有VC库对应的版本时是无法执行的.
VS2008生成
这里生成c语言的动态库,主要是为了让c#调用.先来一段测试代码.
//vs编译的话,要将函数导出
_declspec(dllexport) int _stdcall add(int a, int b)
{
return a + b;
}
看一下VS2008生成dll,依赖的dll文件
GCC生成
不得不说,原先没用过GCC生成dll,便在百度上进行搜索,发现全是肯定.代码还是和用VC有区别,用GCC不需要对函数进行导出.代码如下:
int add(int a, int b)
{
return a + b;
}
#注意编译,只需要指定为*.dll 加上-shared
gcc -o callback.dll -shared main.c
C#如何调用
[DllImport("callback.dll", SetLastError = true)]
static extern int add(int a, int b);
private void button1_Click(object sender, EventArgs e)
{
try
{
string txt1 = textBox1.Text;
string txt2 = textBox2.Text;
int sum = add(Convert.ToInt32(txt1), Convert.ToInt32(txt2));
textBox3.Text = sum.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}
}
效果:
秋风
2017-11-24