c# - 在 C# 中使用 C++ 代码

标签 c# c++

我有带有类的 c++ dll,我想从 C# 代码发送字符串,由于 CLR,我无法使用字符串,我将尝试在 c++ dll 中将字符串更改为 char,并从 c# 发送字节(因为 c# 中的 c++ char=byte) 但 c# 不理解 c++ 数组我可以发送 1 个字节,它会好的,但不是数组,请帮忙! dll代码:

public ref class Coding
    {
    public:
        void HillCoding(char filePath[])
        {

            ...
        }
    };

最佳答案

这是从 C# 调用 C++ dll 函数的工作代码:

    sbyte[] A_SB_array = new sbyte[0];
    ArrayConvCtoSB(ref A_SB_array, ar_param.ToCharArray());
    fixed (sbyte* SB_array = A_SB_array)
        return CPSFEW.getDataLength(SB_array);

这不是“非常好的代码”,但它说明了您的需求。

PS:这里是ArrayConvCtoSB。我不喜欢它,它只是为了理解。

    static private void ArrayConvCtoSB(ref sbyte[] to_sbyte, char[] from_char)
    {
        for (int i = 0; i < from_char.Length; i++)
        {
            Array.Resize(ref to_sbyte, to_sbyte.Length + 1);
            to_sbyte[i] = (sbyte)from_char[i];
        }
    }

PPS:“固定”是强制垃圾收集器不清除 SB_array 内存的强烈要求:否则它可以。 :)

关于c# - 在 C# 中使用 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115199/

相关文章:

c# - 将对象转换为 IEnumerable<object>

c# - 从驱动器读取部分大文件

c++ - cppUnit 在启动每个单元测试时是否使用 fork()?

c# - 如何返回一个空字符串?

c# - 将控件存储在变量中

c# - Dapper 和 SQL Server 数据库入门

c++ - 如何防止 Boost.Interprocess 使用 wchar?

c++ - Qt 连接功能 - 使用 lambda 进行信号消歧

c++ - 如何正确使用选择排序算法对列表进行排序?

c++ - 指针模板特化