Git 源码地址

C++/CLI 托管C++的托管与非托管字符串的相互转换【1】

C++/CLI 托管C++的数据类型介绍【2】

C++/CLI 托管C++的基本数据类型及函数【3】

C++/CLI 托管C++的数组介绍【4】

C++/CLI 托管C++之字符串封装【5】

C++/CLI 托管C++之enum枚举封装【6】

C++/CLI 托管C++之类、属性封装【7】

C++/CLI 托管C++之结构体封装【8】

C++/CLI 托管C++之结构体封装(内存对齐#pragma pack)【9】

C++/CLI 托管C++之联合体union封装【10】

C++/CLI 托管C++之导出注释【11】

C++/CLI signing snk文件强命名


/VS2005版的托管与非托管的字符串的相互转换使用的是Marshal

//之后的版本可以使用Marshaling,该库转换更方便

//这里介绍的是VS2005版的使用Marshal的转换方法

C# Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

 

//-----------------------------------------------------------
// 函数名称:ManagedString2UnmanagedAnsiString
// 函数功能:将托管字符串转成非托管的ANSI字符串
// 参数:    String^ str [in] 托管字符串
// 说明:    返出的字符串使用完后,需要手动释放!
//-----------------------------------------------------------

//托管字符串转非托管的ANSI字符串

char *ManagedString2UnmanagedAnsiString(String ^ str)
{
    IntPtr p = Marshal::StringToHGlobalAnsi(str);
    if (p == IntPtr::Zero)
        return NULL;

const char *pTemp = static_cast(p.ToPointer());
    if (pTemp == NULL) return NULL;

char *pOut = new char[strlen(pTemp) + 1];
    strcpy(pOut, pTemp);
    Marshal::FreeHGlobal(p);
    return pOut;
}

C#Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14

 

//-----------------------------------------------------------
// 函数名称:UnmanagedToManagedAnsiString
// 函数功能:将非托管字符串转成托管的ANSI字符串
// 参数:    char* str [in]  非托管字符串
//-----------------------------------------------------------

//非托管字符串转托管的ANSI字符串

String ^ UnmanagedToManagedAnsiString(char *str)
{
    return Marshal::PtrToStringAnsi((IntPtr)str);
}

C++/CLI 托管C++的托管与非托管字符串的相互转换【1】相关推荐

  1. 对PInvoke函数函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。...

    C#引入外部非托管类库时,有时候会出现"对PInvoke函数调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配"的报错. 通常在DllImport标 ...

  2. 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配

     调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配 用c#调用视频接口相关的dll,dll ...

  3. 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配...

    VS10下调用dll,代码如下: // C++接口声明 void test(char *str);// 接口声明 [DllImport("datalib.dll", EntryPo ...

  4. Unity 使用Marshal类将托管内存封送到非托管内存

    C++代码通常被称为非托管代码,而我们在Unity中使用的C#代码会被编译成通用中间语言CIL,CIL/.Net代码通常被称为托管代码.那我们如何在Unity中调用由C++封装的dll动态库中接口时将 ...

  5. C# 托管资源和非托管资源

    原文地址:http://blog.csdn.net/zlwzlwzlw/article/details/7918633 托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源.托 ...

  6. C#调用非托管C++DLL:直接调用法

    在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...

  7. c++.net 托管类封装非托管类

    C++.net中非托管的代码虽然在托管里面可以直接使用,但是有时候却会被限制.比如当需要用托管里面的 ArrayList 存储一个非托管的对象的时候就需要用一个托管的类把这个非托管的类封装一下,其他的 ...

  8. C#编程(七十四)----------释放非托管资源

    释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托 ...

  9. 有关Dispose,Finalize,GC.SupressFinalize函数-托管与非托管资源释放的模式

    //这段代码来自官方示例,删除了其中用处不大的细节using System; using System.ComponentModel;/**** 这个模式搞的这么复杂,目的是:不管使用者有没有手动调用 ...

  10. 关于Dll、Com组件、托管dll和非托管dll的理解

    Com组件和dll区别: 1.普通dll不能通过regsvr32.exe来注册,而Com组件能通过regsvr32.exe注册. 2.Com组件是微软的一个协议,满足com组件协议的dll文件就是co ...

最新文章

  1. Java核心技术卷I基础知识3.6.6 码点与代码单元
  2. jquery gridly (拖拽插件)
  3. Zookeeper分布式一致性原理(一):分布式架构
  4. 深度强化学习实战:Tensorflow实现DDPG - PaperWeekly 第48期
  5. 使用LXE_SP_CHECKSPELLING_MS进行ABAP文本拼写检查
  6. 『程序员』 [程序人生]程序员几种不同的境界
  7. 【cocos2d-x从c++到js】13:回调函数2——JSCallbackWrapper
  8. 字典和键值对换输出_Python知识小结—字典
  9. java中set,get用法
  10. LIU学生成绩管理系统源码【演示视频】
  11. Meta-learning algorithms for Few-Shot Computer Vision论文解读(一)
  12. 两个字符串中最长公共单词 C语言
  13. python for ArcGIS 绘制北京市板块地图
  14. Spark 1:Spark基础入门
  15. ​表面修饰阳离子磁性/表面螯合金属离子磁性二氧化硅微球/镱离子掺杂二氧化硅微球​
  16. centos7 搭建主机信任、重定向、挂载
  17. [LeetCode]682. 棒球比赛(Baseball Game)Java
  18. 黑客在 Windows 95 邮件应用中发现彩蛋
  19. Matlab进阶绘图第1期—山脊图/嵴线图/峰峦图
  20. TensorFlow 强化学习:1~5

热门文章

  1. SAP BASIS 常见basis的事务码
  2. xcConfirm弹出框
  3. SpringCloud-消息总线BUS
  4. 【一文读懂】Mysql索引原理之环环相扣
  5. Flash 存储器接口标准:CFI和JEDEC
  6. 我的U盘是金士顿4G的打不开,windows无法格式化
  7. 建立一个Point类,包含数据成员x,y,实现需要的成员函数,并设计main函数完成测试
  8. 如何用区块链防止学历造假?
  9. ${pageContext.request.contextPath}不生效的问题
  10. 动手做一台十分简单的机械按键收音机(RDA5807FP应用实例)