PInvoke Interop Assistant를 사용하여 C# PInvoke 서명을 생성했습니다. 나는 이것에 대한 확인을 원합니다. DLL을 호출 할 때 "PInvoke DLL을 찾을 수 없습니다"라는 메시지가 나타납니다. 함수를 내보내고 있습니다. DLL은 실행 파일과 함께 제공됩니다. 메시지와 암호문은 미가공 바이트의 입/출력 블롭이며 동일한 버퍼입니다.이 C 함수의 올바른 C# PInvoke 서명
이/// Return Type: int
///message: UINT8*
///ciphertext: UINT8*
///msglength: UINT64->unsigned __int64
[DllImport("HC128.dll", EntryPoint = "EncryptDeviceName")]
public static extern int EncryptDeviceName(System.IntPtr message, System.IntPtr ciphertext, ulong msglength);
나는 다음과 같은 similar question의 제안을 따라 업데이 트를 제공합니다 :
extern "C" int __declspec(dllexport) EncryptDeviceName(uint8 *message, uint8 *ciphertext, uint64 msglength)
{
...
return 0;
}
그것은 다음과 같은 C#의 PInvoke 시그니처를 생성합니다.
UPDATE
내 서명은 정렬 화 ALLOC/할당 해제와 윈도우 CE 6 작업을 수행합니다. Tergiver의 서명은 Windows CE 6에서도 작동하며 마샬링 alloc/dealloc을 필요로하지 않습니다.
이러한 링크를 확인하셨습니까? http://msdn.microsoft.com/en-us/library/sd10k43k.aspx http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/4da372f4-9602-4df5-9585- 8816ad0770cf – SOReader