在C#中调用C/C++代码
2004-09-03 12:27
246 查看
示例1: HelloWorld程序
using System;
using System.Runtime.InteropServices;
class MyClass
{
运行这个程序会弹出一个 HelloWorld 的对话框, 效果和 Windows程序设计 上那个一样. 这段代码用到了两个技术: 一个是extern关键字,一个是 DllImportAttribute 属性.
extern用来修饰一个函数, 表示这个函数在类的外部实现. DllImportAttribute 属性引入一个DLL库,指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开, 通常跟extern一起使用. 用DllImportAttribute 属性时别忘了命名空间System.Runtime.InteropServices
示例2: 调用C/C++代码的具体步骤
被调用的C/C++代码
// 文件名: called.cpp
int __declspec(dllexport) MyMethod(int i)
(1)将 called.cpp 编译成 dll 文件
命令格式: cl /LD /MD called.cpp
(2) 用C#调用 MyMethod 函数
using System;
using System.Runtime.InteropServices;
public class MyClass
其中EntryPoint是外部函数的入口点, 在 这里是“MyMethod“.
好了现在运行这个程序,结果是不是调用了 MyMethod, 呵呵. 当然了,这只是个很小的Demo, 并没有很全面的讲解实际运作中会遇到的所有问题, 比如, C/C++ 与 C# 类型转换, C/C++没有内置string类型那. 等等. 不过麻雀虽小,五脏俱全,大体的调用框架是有了. 哈.
要求和注意问题:调用的C/C++代码必须是普通函数或静态函数, 不能是类的函数成员. C#中的extern函数只能是静态的.
using System;
using System.Runtime.InteropServices;
class MyClass
{
运行这个程序会弹出一个 HelloWorld 的对话框, 效果和 Windows程序设计 上那个一样. 这段代码用到了两个技术: 一个是extern关键字,一个是 DllImportAttribute 属性.
extern用来修饰一个函数, 表示这个函数在类的外部实现. DllImportAttribute 属性引入一个DLL库,指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开, 通常跟extern一起使用. 用DllImportAttribute 属性时别忘了命名空间System.Runtime.InteropServices
示例2: 调用C/C++代码的具体步骤
被调用的C/C++代码
// 文件名: called.cpp
int __declspec(dllexport) MyMethod(int i)
(1)将 called.cpp 编译成 dll 文件
命令格式: cl /LD /MD called.cpp
(2) 用C#调用 MyMethod 函数
using System;
using System.Runtime.InteropServices;
public class MyClass
其中EntryPoint是外部函数的入口点, 在 这里是“MyMethod“.
好了现在运行这个程序,结果是不是调用了 MyMethod, 呵呵. 当然了,这只是个很小的Demo, 并没有很全面的讲解实际运作中会遇到的所有问题, 比如, C/C++ 与 C# 类型转换, C/C++没有内置string类型那. 等等. 不过麻雀虽小,五脏俱全,大体的调用框架是有了. 哈.
要求和注意问题:调用的C/C++代码必须是普通函数或静态函数, 不能是类的函数成员. C#中的extern函数只能是静态的.
相关文章推荐
- 在C#中调用C/C++代码
- c/c++/MFC 调用 js 函数代码
- Unity3D 调用C++的Dll代码
- Matlab与C/C++联合编程之从Matlab调用C/C++代码
- Android Studio调用c++代码和opencvforandroid
- C#托管代码与C++非托管代码互相调用
- C/C++调用Java代码(属性和方法)
- Win8 Metro C# 调用 C++代码
- 使用JNI进行混合编程:在C/C++中调用Java代码
- C++调用OC代码
- Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示
- java调用c/c++代码
- C语言代码中调用C++代码的方法示例
- 例说android静态JNI调用C/C++代码——HelloWorld
- C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
- C#调用C++代码遇到的问题总结
- C代码中如何调用C++ C++中如何调用C
- 【cocos2d-x从c++到js】JS与C++的交互1——JS代码调用C++代码
- c/c++/MFC 调用 js 函数代码
- <转>c#调用C++DLL类型转换