小编Ada*_*dam的帖子

将一个字符串数组从C#传递给C++ dll然后再传回

我已经浏览了googleverse和堆栈溢出,并且已经看到了几个类似的问题,但我找到的答案都没有为我工作.我是新会员,所以我不允许在别人的问题上评论答案,要求澄清,所以我不得不求助于我自己.

好的,我试图将一个字符串数组从C#应用程序传递给C++ dll,然后在另一个C#应用程序中获取该信息.我相信我正在传递给C++,但我无法从dll中获取正确的字符串.

我像这样传递给C++:

[DllImport("KinectPlugins.dll", CallingConvention = CallingConvention.Cdecl)]
    private static extern void SetGrammarData(string[] strArr, int size);


    public void SetGrammar(string[] strArr)
    {
        SetGrammarData(strArr, strArr.Length);
    }
Run Code Online (Sandbox Code Playgroud)

我的C++代码如下所示:

#define EXPORT_API __declspec(dllexport)
#pragma data_seg(".SHARED")
    char** grammarData;
    int grammarDataLength = 0;
#pragma data_seg()
#pragma comment(linker, "/section:.SHARED,RWS")

EXPORT_API void SetGrammarData(char** strArr, int size)
{
    grammarData = strArr;
    grammarDataLength = size;
}

EXPORT_API int GetGrammarDataLength()
{
    return grammarDataLength;
}
EXPORT_API char** GetGrammarData()
{
    return grammarData;
}
Run Code Online (Sandbox Code Playgroud)

我在其他C#应用程序中抓取信息的代码如下所示:

[DllImport("KinectPlugins.dll")]
private static extern IntPtr GetGrammarData();
[DllImport("KinectPlugins.dll")]
private static extern …
Run Code Online (Sandbox Code Playgroud)

c# c++ string dll char

6
推荐指数
1
解决办法
4363
查看次数

标签 统计

c# ×1

c++ ×1

char ×1

dll ×1

string ×1