Visual Studio 2012 (11.0.51106.01 업데이트 1)로 64 비트 Windows 7 상자에서 개발 중입니다..NET에서 "지정된 프로 시저를 찾을 수 없습니다"오류가 발생했습니다.
일부 C 코드를 (32 비트) DLL로 컴파일하는 지원 프로젝트가 있습니다. 내 헤더에서 내가 가진 :
내 C 파일에서#define RET_TYPE(type) _declspec(dllexport) type __stdcall
RET_TYPE(int) test_dll_call(int invar);
내가 가진 :
RET_TYPE(int) test_dll_call(int invar)
{
int retVal = 4 * invar;
return retVal;
}
나는 또한 다음과 같이 클래스의 내부 DLL을로드하는 (32 비트)의 WPF C# 응용 프로그램이 있습니다 다음과 같이
[DllImport("MyDll.dll", CharSet = CharSet.Ansi, BestFitMapping = true, ThrowOnUnmappableChar = true)]
public static extern int test_dll_call(int invar);
이
는 싸여있다 :public void Wrap_TestDllCall()
{
try
{
int outTest = 0;
int invar = 3;
outTest = test_dll_call(invar);
}
catch (Exception ex)
{
dllError = ex.ToString();
}
}
이것을 개발 상자의 디버거에서 실행하면 정상적으로 작동합니다. 모든 관련 파일을 별도의 폴더에 복사하고 거기에서 실행하면 정상적으로 작동합니다.
내가 32 비트 Windows XP SP3 나는 다음과 같은 오류 얻을 실행하는 다른 컴퓨터에 필요한 모든 폴더를 복사하는 경우 :
System.DllNotFoundException: Unable to load DLL 'MyDll.dll': The specified procedure could not be found. (Exception from HRESULT: 0x8007007F)
at MyNamespace.MyClass.test_dll_call(Int32 invar)
at MyNamespace.MyClass.Wrap_TestDllCall()
내가 내 컴파일 된 EXE와 DLL 모두에 종속 워커를 사용했다가, 발견 한 누락 된 DLL은 wer.dll
과 ieshims.dll
뿐이므로 내 연구에서는 XP에 필요하지 않습니다.
VS2012 C++ 재배포 가능 파일과 .NET 4 및 .NET 4.0.3 업데이트를 설치했습니다. 아직도 운이 없다.
이 이 앱이 DLL의 절차를 찾을 수 없습니다로 나타납니다 편집 한스가 지적 하듯이; 나는 또한 시도 :
[DllImport("MyDll.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int test_dll_call(int invar);
또한 내 dev에 상자에서 잘 작동하지만 WINXP 상자에서 같은 오류를 제공
__declspec(dllexport) int __cdecl test_dll_call(int invar);
합니다.
도움말!
누락 된 DLL에 대해 불평하지 않고 DLL에서 "test_dll_call"함수를 찾을 수 없습니다. 잘못된 DLL을 복사 한 것 외에도 잘못 될 수있는 방법은 거의 없습니다. –
좋아요, 그럼 그 다른 방법은 뭔가요? 내 dev 상자에서 작동하지만 내 WinXP 테스트 랩탑에서는 작동하지 않습니다. –