C++怎么调用C#函数
2018-02-10 17:27
351 查看
把C#编译成DLL或者Axtive控件,再由C调用 !
比如使用C++调用C#的DLLSwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
接着就是一大堆的0x01等等。自己做了个Sample,仔细分析发现还是自己没有搞清楚。正确的操作如下:
1 创建C# DLL,需要指定应用类型为“类库”,代码:
namespace CSLib
{
public class Class1
{
private string name; public string Name
{
get
{
return name;
}
set
{
name = "Your Name: " + value;
}
}
}
}2 C++客户程序,是个控制台应用,代码:
#using "..\debug\CSLib.dll"
using namespace CSLib;int _tmain(int argc, _TCHAR* argv[])
{
Class1 ^c = gcnew Class1(); c->Name = "zzj"; printf("%s\n", c->Name); return 0;
}3 几点要记住:
1 使用#using引用C# DLL,而不是#include。我就是想当然的使用了后者,所以浪费了一上午的时间;
2 别忘了using namespace CSLib;
3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。
比如使用C++调用C#的DLLSwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
接着就是一大堆的0x01等等。自己做了个Sample,仔细分析发现还是自己没有搞清楚。正确的操作如下:
1 创建C# DLL,需要指定应用类型为“类库”,代码:
namespace CSLib
{
public class Class1
{
private string name; public string Name
{
get
{
return name;
}
set
{
name = "Your Name: " + value;
}
}
}
}2 C++客户程序,是个控制台应用,代码:
#using "..\debug\CSLib.dll"
using namespace CSLib;int _tmain(int argc, _TCHAR* argv[])
{
Class1 ^c = gcnew Class1(); c->Name = "zzj"; printf("%s\n", c->Name); return 0;
}3 几点要记住:
1 使用#using引用C# DLL,而不是#include。我就是想当然的使用了后者,所以浪费了一上午的时间;
2 别忘了using namespace CSLib;
3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。
相关文章推荐
- C++怎么调用C#函数
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- c++工程里一个文件怎么调用另外一个文件里的函数
- c# 调用c++ && c++调用c# 函数
- Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数)
- c#调用c++dll共享内存需要函数
- C#调用C++ dll 时,涉及到函数参数类型的转换,这里是C++和C#的类型对照表
- C#调用C++DLL时遇到的PInvoke 函数的调用导致堆栈不对称问题
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- C++ && C# 函数的递归调用
- C#调用C(C++)dll示例教程,包含dll找不到函数入口的解决办法,包含C#dll调用方式不对出错的解决办法
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C#中调用C++动态库的函数
- C#调用C++函数入口点的问题 z
- C#调用C++库(dll)的函数
- 教你快速在c#中调用C++代码(函数)
- C#调用C++ DLL 中定义的函数
- C# 如何调用 C++ DLL中的函数接口和回调函数
- 怎么使用C#调用C++ dll 类库