如何解决通过引用从 C# 传递字节到 C++/CLI 包装器以调用 InterlockedOr8 函数
我试图通过 C# 中的引用传递字节,以便我可以对它们调用原子操作 InterlockedOr8。我在 C++ 中有以下静态库:
Bitwise.h:
char EightBitOr(char volatile* destination,char value);
Bitwise.cpp:
#include "Bitwise.h"
char EightBitOr(char volatile* destination,char value)
{
return InterlockedOr8(destination,value);
}
我从这个 C++/CLI 包装器 DLL 调用它:
Wrapper.h:
#include "..\Bitwise\Bitwise.h"
using namespace System;
namespace Wrapper {
public ref class Bitwise
{
public:
static char InterlockedEightBitOr(volatile char* destination,char value);
};
}
Wrapper.cpp:
#include "Wrapper.h"
char Wrapper::Bitwise::InterlockedEightBitOr(volatile char* destination,char value)
{
return EightBitOr(destination,value);
}
我正在尝试从 .NET 5.0(核心)C# 控制台应用程序调用包装器,如下所示:
var map = new byte[268435456];
Bitwise.InterlockedEightBitOr(ref map[0],(byte)1);
但我收到以下错误:
CS0570 'Bitwise.InterlockedEightBitOr(sbyte*,sbyte)' 不受支持 按语言
我还注意到包装器已将方法签名转换为 sbyte Bitwise.InterlockedEightBitOr(sbyte* destination,sbyte value);
,而我更愿意传递无符号字节,但我不确定如何更改此行为。无论如何,我想知道是否有人知道我是否可以通过引用将字节传递给这个 CLI 包装器?我需要做哪些改变?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。