您看过C ++ / CLI吗?
让我举一个简短的例子。这是Visual C ++-> CLR->类库项目的源文件。它基本上获取Windows用户名并返回它。
请注意,为了进行编译,您必须进入项目设置并将“其他依赖项”标记为“从父项继承”,因为我们正在使用这些Windows库(kernel32.lib,user32.lib,..)。
// CSCPP.h#pragma once#include "windows.h"using namespace System;namespace CSCPP { public ref class Class1 { // TODO: Add your methods for this class here. public: String^ GetText(){ WCHAR acUserName[100]; DWORD nUserName = sizeof(acUserName); if (GetUserName(acUserName, &nUserName)) { String^ name = gcnew String(acUserName); return String::Format("Hello {0} !", name); }else{ return gcnew String("Error!"); } } };}现在创建了一个新的C#项目,并添加了对第一个C ++ / CLI类库项目的引用。然后调用实例方法。
namespace CSTester{ class Program { static void Main(string[] args) { CSCPP.Class1 instance = new CSCPP.Class1(); Console.WriteLine(instance.GetText()); } }}这在我的机器上产生了以下结果:
你好,m3rlinez!
C / CLI基本上是对C 标准的托管扩展。它允许您在C /
CLI项目中利用CLR类和数据类型,并将其公开给托管语言。您可以使用此方法为旧的C
库创建托管包装。有一些奇怪的语法,例如
String^,定义对CLR String的引用类型。我发现“快速C / CLI-
不到10分钟即可学习C /
CLI”在这里很有用。



