如何在基于 Visual-C++ 的 .net DLL 中从 C# 接收字符串?

Posted

技术标签:

【中文标题】如何在基于 Visual-C++ 的 .net DLL 中从 C# 接收字符串?【英文标题】:How to receive strings from C# in Visual-C++ based .net DLL? 【发布时间】:2010-08-21 22:15:33 【问题描述】:

如何在基于 Visual-C++ 的 .net DLL 中接收来自 C# 的字符串?

在 C++ 中(使用 clr)我有这个代码:

#include "stdafx.h"
##include <Windows.h>
#include <string>
#include <windows.h>

namespace NSST

  public ref class Wrapper
  
 public:
     Wrapper() 
    static void init_1(std::string a, std::string b)
     static void init_2()
  ;
;

但在 .net C# 中,我只看到一个函数 init_2。如何使init_1 在.net 中可见?

【问题讨论】:

【参考方案1】:

你不能使用std::string,你应该使用System::String^:

static void init_1(System::String^ a, System::String^ b);

【讨论】:

以及如何将 System::String^ a 转换为 std::string a?有可能吗? 好的,看这里:buffered.io/2007/03/02/net-systemstring-to-ansi-char 上述文章的更新链接:buffered.io/posts/net-systemstring-to-ansi-char(如果旧的 cmets 也可以编辑,那就太好了)。

以上是关于如何在基于 Visual-C++ 的 .net DLL 中从 C# 接收字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 unsigned short* 从 Visual-C++ DLL 传递到 VB.NET

在Mono中获取MissingDLL错误

Visual-C Win32 API 分层窗口闪烁

std :: move(std :: array)g ++ vs visual-c ++

如何在 .net 中创建 13 个月的基于月球的日历

如何解决此 Visual Studio 编译器 BUG?