2011-11-07 3 views
0

test이라는 함수 하나를 사용하여 Qt에 DLL을 만들었습니다. DLL을 문제없이 사용할 수있는 또 다른 Qt 프로젝트를 만들었습니다. 이제는이 DLL을 C# 응용 프로그램에서 사용하고 싶지만,이 함수를 호출하는 데 문제가 있습니다. 내 C# exe와 같은 폴더에 DLL을 배치했습니다. EntryPointNotFoundExceptionQt에서 만든 DLL을 C# 응용 프로그램으로 가져 오는 방법

내가 같은 예외 내가 잘못 뭐하는 거지

을 내 같이 DllImport에 EntryPoint = test를 추가하지만 여전히받을 시도 : 나는 다음과 같은 예외가 발생하므로

[DllImport("TestDll.dll", CharSet = CharSet.Ansi, SetLastError = true)] 
private static extern bool test(); 

같은 기능을 가져?

+1

테스트 방법을 DLL에서 내 보내셨습니까? Dependency Walker를 다운로드하여 내보내기에 나열되어 있는지 확인하십시오. http://www.dependencywalker.com/ – shf301

+0

텍스트가없고 SetLastError = true가 잘못되었으므로 char set이 필요하지 않습니다. win apis에 대한 것입니다. 대부분의 DLL은 이름이 엉망입니다. 맹 글링을 피하려면 .def 파일로 내보내기하십시오. extern "C"를 사용해야합니다. 또한 일치하는 호출 규칙을 얻으십시오. C++ 코드는 cdecl을 사용합니다. C#의 기본값은 stdcall입니다. –

+0

Qt의 정적 빌드가 설치되어 있지 않다는 느낌이 들었습니다. 아직 확실하지 않습니다. – poco

답변

0

CharSet에서 옵션을 변경해 보셨습니까? 나는 비슷한 상황에 처해있다. 그러나 그 당시 저는 Fortran에서 컴파일 된 제 3 자 Dll을 사용하고있었습니다. Ansi에서 Unicode로 시도해보십시오.

HTH

+0

네, 유니 코드를 시도했지만 여전히 동일한 예외가 발생했습니다. – poco

+0

CharSet는 없으므로 아무 관련이 없습니다. 여기에 텍스트 매개 변수 –

관련 문제