从C#调用C++函数

ale*_*lex 3 c# c++ dll

我有2个C++ DLL.其中一个包含以下功能:

void init(const unsigned char* initData, const unsigned char* key)
Run Code Online (Sandbox Code Playgroud)

另一个包含此功能:

BYTE* encrypt(BYTE *inOut, UINT inputSize, BYTE *secretKey, UINT secretKeySize).
Run Code Online (Sandbox Code Playgroud)

有没有办法从C#中调用这两个函数?我知道你可以在C#中使用[DllImport]来调用C++函数,但指针给我带来了困难.

任何帮助,将不胜感激!

Jar*_*Par 6

是的,您可以从C#中调用这两个,假设它们包含在extern"C"部分中.我不能给你一个详细的PInvoke签名,因为我没有足够的信息来说明各种参数是如何相关的,但以下内容是可行的.

[DllImport("yourdllName.dll")]
public static extern void init(IntPtr initData, IntPtr key);

[DllImport("yourdllName.dll")]
public static extern IntPtr encrpyt(IntPtr inout, unsigned inuputSize, IntPtr key, unsigned secretKeySize);
Run Code Online (Sandbox Code Playgroud)

允许我们创建更好签名的信息

  1. 加密分配内存是否返回?
  2. 如果#1为真,则如何分配内存
  3. 你能说一下参数的工作原理吗?
  4. 我猜所有的指针值都代表数组/元素组而不是单个元素正确吗?