DllImport C Sharp const char *

dorin.petre

그는 모두

관리되지 않는 dll에서 C #의 관리되는 dll로 만들고 싶습니다.

문서에서는 다음과 같습니다.

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 ++에서는 잘 작동하지만 C #에서는 구문이 문제입니다. evan이 첫 번째 함수로 작동하도록 만들 수없는 것 같습니다.

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 *, char *, char []에 대한 인수로 시도하고 반환시 중단 점을 두었습니다. ap_handle은 항상 0x0000 값이었습니다.

이러한 함수를 가져 오는 적절한 방법은 무엇입니까?

벤 보이트

char* .NET 문자열의 기본 마샬링입니다.

[DllImport("D:\\apbase.dll", EntryPoint = "ap_CreateVirtual", CharSet = CharSet.Ansi)]
//, CallingConvention = CallingConvention.StdCall
public static extern System.IntPtr ap_CreateVirtual(string szFilename);

charC #에서 C ++가 wchar_t아닌 C ++ 이기 때문에 원래 시도가 잘못되었습니다 char.

charC #에서 C ++가 필요한 경우 byte또는 sbyte. 그러나 p / invoke는 단순히 System.String.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ 배열 const char

분류에서Dev

C ++ const char * to std :: string &

분류에서Dev

C의 static const char * VS const char *

분류에서Dev

c# dllimport with pointers

분류에서Dev

C : "static const char * const"를 "static const char *"에 할당

분류에서Dev

C : "static const char * const"를 "static const char *"에 할당

분류에서Dev

C에서 const char * 수정

분류에서Dev

Const Char를 Char * C ++에 추가

분류에서Dev

const char ** 및 char **

분류에서Dev

const char ** and char **

분류에서Dev

C 레지스터 const char * 수정

분류에서Dev

C의 함수에 const char * 전달

분류에서Dev

从int转换为c字符串(const char *)失败

분류에서Dev

C ++에서 wstring을 const * char로 변환

분류에서Dev

(const char *) ++ 또는 (const char) ++?

분류에서Dev

Const Char * to Char 배열

분류에서Dev

C ++ wifstream : 호환되지 않는 유형 char const *, wchar_t const *

분류에서Dev

C 함수 프로토 타입 : \\ char * strinv (const char * s);

분류에서Dev

c-const char * 및 char * 캐스팅 (ADPCM 디코딩)

분류에서Dev

C ++ 'const char *'에서 'char *'로의 잘못된 변환

분류에서Dev

Const char* not assigning properly?

분류에서Dev

C # DllImport : vkCreateInstance 호출시 AccessViolationException

분류에서Dev

c # autocad dllimport by autocad 버전

분류에서Dev

char *에 const char * 할당

분류에서Dev

How to properly cast char ** x to const char **

분류에서Dev

Unhandled Exception when converting const char to char

분류에서Dev

C ++ const LPSTR이 const char *와 다른 이유는 무엇입니까?

분류에서Dev

C ++ * const * const

분류에서Dev

C / const char * org에서 char ** cpy로 동적 malloc으로 문자열 복사