Hyすべて、DllImport Cシャープconst char *
C#で管理されていないDLLから管理対象のDLLにしたいと思っています。正常に動作しますC++では
typedef void* AP_HANDLE
typedef uint32_t ap_u32
AP_HANDLE ap_CreateVirtual(const char *szFilename)
void ap_SetState(AP_HANDLE apbase, const char *szState, int nValue)
unsigned char *ap_ColorPipe(AP_HANDLE apbase,
unsigned char *pInBuffer,
ap_u32 nInBufferSize,
ap_u32 *rgbWidth,
ap_u32 *rgbHeight,
ap_u32 *rgbBitDepth)
が、C#で構文が問題 である私が
public unsafe class appbase
{
[DllImport("D:\\apbase.dll", EntryPoint = "ap_CreateVirtual")]
//, CharSet = UnicodeEncoding
//, CallingConvention = CallingConvention.StdCall
public static extern void* ap_CreateVirtual(char* szFilename);
}
最初の関数の作業をエヴァンない作ることができないようだ。それはドキュメントの
および
public static void Main()
{
unsafe
{
void* ap_handle = null;
appbase APPbase = new appbase();
string s = "D:\\ASX.xsdat";
fixed (char* p = s)
{
ap_handle = APPbase.ap_CreateVirtual(p);
}
return;
}
}
ap_CreateVirtual string、String *、ch ar *、char []、復帰時にブレークポイントを設定します。 ap_handleは常に値0x0000でした
これらの関数をインポートする適切な方法は何ですか?
あなたはCharSet = CharSetでP/Invoke –