2010-04-02 4 views
3

libcurl.NET을 사용하여 C# .NET에 멀티 스레드 FTP 업 로더를 작성했습니다.libcurl .NET이 Win64에서 작동하지 않습니다.

모든 것이 내 컴퓨터에서 정상적으로 작동하지만 Win64를 실행하는 친구에게 응용 프로그램 (exe + libcurl.dll + 2 libcurl C# 바인딩 DLL)을 제공하면 응용 프로그램이 충돌합니다.

전체 main() 함수에 예외 포수를 추가 한 후, 나는 읽을 수있는 오류 메시지를 얻을 수있었습니다 :

후 "시도가 (HRESULT = 0x8007000b에서 예외) 잘못된 형식의 프로그램을로드하려고했습니다" 내 인터넷 환경 설정에서 관리되지 않는 코드를 활성화하는 조언을 찾았습니다. 내 응용 프로그램 및이 플래그가 설정된 LibCurlNet.dll을 다시 컴파일했지만 도움이되지 않았습니다.

이러한 문제의 원인은 무엇입니까?

+1

.exe 프로젝트에서 프로젝트 + 속성, 빌드 탭, 플랫폼 대상 = x86. –

답변

3

libcurl.NET 라이브러리는 32 비트 라이브러리이므로 64 비트 응용 프로그램에서 사용할 수 없습니다. x86 플랫폼을 대상으로 응용 프로그램을 다시 컴파일해야합니다. 이로 인해 64 비트 운영 체제의 WOW64에서 32 비트 응용 프로그램으로 실행됩니다.

+0

감사합니다. 매력처럼 작동했습니다. Windows 용 libcurl의 x64 버전이 있습니까? 그렇지 않다면 C#으로 대체 할 원시 C#이 있습니까? – mephisto123

+0

@Dmitry : 유일한 분산 버전 (http://sourceforge.net/projects/libcurl-net/)은 32 비트입니다. libcurl (.NET이 아닌)이 64 비트를 지원하기 때문에 항상 64 비트 버전을 컴파일 할 수 있습니다. 즉, 이와 같은 상황에서 x86을 대상으로하지 않을 이유가없는 경우가 종종 있습니다. 2GB 이상의 RAM을 사용해야하는 경우가 아니라면 x86을 그대로두면됩니다. –