我正在使用Visual Studio 2012(11.0.51106.01更新1)在64位Windows 7上進行開發。「無法找到指定的過程」.NET 4的錯誤
我有一個支持項目,將一些C代碼編譯成(32位)DLL。在我的頭我有:
#define RET_TYPE(type) _declspec(dllexport) type __stdcall
RET_TYPE(int) test_dll_call(int invar);
在我的C文件我有:
RET_TYPE(int) test_dll_call(int invar)
{
int retVal = 4 * invar;
return retVal;
}
我也有一個(32位)WPF C#加載一個類,如下所示的內部的DLL應用:
[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()
我用的Dependency Walker在我的編譯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);
和
__declspec(dllexport) int __cdecl test_dll_call(int invar);
這也能正常工作在我的dev的盒子,但給出了WinXP的箱相同的錯誤。
幫助!
它不是抱怨缺少DLL,它找不到DLL中的「test_dll_call」函數。很少有可能出錯的方法,除了複製錯誤的DLL以外。 – 2013-02-15 22:28:20
好的,那些其他方式是什麼?它適用於我的開發盒,但不適用於我的WinXP測試筆記本電腦。 – 2013-02-15 22:30:32