0

私はC ++でこの関数を持っています

extern "C" __declspec(dllexport) void SendPacketToServer(BYTE *packet, int Length)
{
    _SendToServer(packet, Length);
}

c# でどのように使用できますか?

私はこれまでにこれを試しました:

[DllImport("DAFramework 1.0.dll", SetLastError = true)]
internal static extern void SendPacketToServer(IntPtr packet, int length);

            unsafe 
            {
                fixed (byte* pByte = new byte[] { 0x13, 0x00 })
                {
                    IntPtr data = new IntPtr((void*)pByte);
                    SendPacketToServer(data, 2);
                }
            }   

私は何か間違ったことをしていますか?もしそうなら、どうすればそれを機能させることができますか?エラーが発生します:Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

もっと簡単な方法でできますか?

4

2 に答える 2

0
于 2015-03-02T11:10:15.020 に答える
0

適切な呼び出し規約を設定する必要があります。

[DllImport("DAFramework 1.0.dll", SetLastError = true, CallingConvention=CallingConvention.Cdecl)]

ネイティブ関数がそれを宣言しているためです(extern "C" __declspec(dllexport))。

于 2012-12-29T08:18:24.520 に答える