VS2010中C#调用C函数
(2013-07-22 16:12:50)分类: C_Concept |
1. 创建C本地DLL文件
1.1 创建Win32Dll项目
1.2 创建DLL,点击完成
1.3 在“头文件”里新建文件:CPPLibraryTest.h
- extern
"C" __declspec(dllexport) void Method1();
并输入:
- #include
"stdafx.h" - #include
- #include
"CPPLibraryTest.h" -
- void
Method1() - {
-
int *p = NULL; -
*p = 1;//异常情形 - }
1.5 新建模块定义文件:CPPLibraryTest.def
并输入:
- LIBRARY
CPPLibraryTest - EXPORTS
Method1
LIBRARY是模块定义文件必须的一部分,它告诉链接器(linker)如何命名你的DLL。EXPORTS也是模块定义文件必须的一部分,这部分使得该函数可以被其它应用程序访问到并且它创建一个导入库。当你生成这个项目时,不仅是一个.dll文件被创建,而且一个文件扩展名为.lib的导出库也会被创建。EXPORTS后面列出要导出函数的名称。可以在.def文件中的导出函数名后加@n,表示要导出函数的序号为n(在进行函数调用时,这个序号将发挥其作用)。
1.6 编译并生成文件:CPPLibraryTest.dll
1.7 新建C#控制台应用程序
1.8 program.cs 文件内容
- class
Test - {
-
[DllImport("CPPLibraryTest.dll")] -
private extern static void Method1(); -
-
static void Main(string[] args) -
{ -
try -
{ -
Method1(); -
} -
catch (Exception err) -
{ -
Console.WriteLine("捕获异常:{0}", err.ToString()); -
} -
finally -
{ -
Console.WriteLine("执行 finally"); -
} -
-
Console.ReadLine(); -
} - }
1.9 将CPPLibraryTest.dll拷贝到ConsoleTest的Debug文件夹下,生成运行即可。
2.0 运行结果: