SDL과 C# .NET 프로그램간에 데이터를 마샬링하려고합니다. 나는 오류를 얻을하고 내 Windows 콘솔 응용 프로그램 빈 응용 프로그램 창을 열고처럼 진대 내가 SDL.DLL 잘 작동으로 만들 처음 몇 전화 : I 그러나) SDL_LoadBMP을 (를 호출 할 때PInvoke를 사용하여 'SDL.DLL'의 SDL_LoadBMP() 진입 점을 찾을 수 없습니다.
My_SDL_Funcs.SDL_Init(0x0000FFFF); // SDL_INIT_EVERYTHING
IntPtr scrn = My_SDL_Funcs.SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, 0x00000000); // SDL_SWSURFACE
screen = (SDL_Surface)Marshal.PtrToStructure(scrn, typeof(SDL_Surface));
My_SDL_Funcs.SDL_WM_SetCaption("Hello World", null);
// ...
을, I 이 런타임 오류가 발생합니다 :
Unable to find an entry point named 'SDL_LoadBMP' in DLL 'SDL'.
SDL의 문서는 SDL_LoadBMP는 const를 숯불 * 파일 이름을 사용하고 SDL_Surface 구조체에 대한 포인터를 반환 말한다.
가 처음으로 PInvoke를 선언했습니다 :
[DllImport("SDL", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr SDL_LoadBMP([MarshalAs(UnmanagedType.LPWStr)] string file);
이 작동하지 않았다 때, 나는 시도 :
public static extern IntPtr SDL_LoadBMP(IntPtr file);
및 사용 :
IntPtr fn = Marshal.StringToHGlobalAnsi(filename);
IntPtr loadedImage = My_SDL_Funcs.SDL_LoadBMP(fn);
을하는 것을 가정 함수 actuall이이 라이브러리 (SDL.DLL 버전 1.2.14)에 존재합니까? const char *에 잘못된 호출을 사용하고 있습니까?
당신은 내가 그것을보고 있지 않다 않는 몇 번 .. 당신이 .. 것을 게시 할 수있는 일 밝혔다 코드가 .. 중 문제 같은 소리 : 위의 코드를 사용하면 기본적으로 매크로 (고화질)로 같은 일을 마샬링 된 인스턴스 또는 내 메소드를 호출하려고하는 메소드 또는 정적 메소드가 아닐 수도있는 메소드를 해제하는 중입니다.하지만 관리되지 않는 리소스를 적절하게 해제하지는 않을 것입니다. – MethodMan
@DJ KRAZE - 원래 질문을 수정했습니다. 근무 통화가 포함됩니다. – Buggieboy
시원함 나는 또한 @ GalacticJello의 대답과 함께 갈 것입니다. 나는 내 자신의 지역에서 전화를 시도하지 않았다고 생각합니다. 좋은 걸 the GalacticJello – MethodMan