我試圖從非託管DLL導入到我的C#程序的功能。從非託管DLL導入函數時0x8007007F是什麼意思?
這是我的代碼:
[DllImport("MarkEzd.dll", EntryPoint = "lmc1_Initial2", CharSet = CharSet.Unicode,
CallingConvention = CallingConvention.StdCall)]
public static extern int piplmc1_Initial(string PathName, bool TestMode);
....
int intlmc1_Initial = piplmc1_Initial(m_strEzCADSotwareFullPath, false);
if (intlmc1_Initial > 0)
{
return;
}
的誤差,譯自法文:
無法加載DLL MarkEzd.dll,指定的程序無法找到例外德HRESULT:0x8007007F
這個錯誤是什麼意思?
你看過www.pinvoke.net了嗎? kernal32.dll方法有示例代碼。只有公共方法可以使用DllImport訪問。有時這些方法的名稱會稍微變化,所以DLL導出查看器應該提供正確的名稱。確保該dll位於正在用於編譯的文件夾中。您可能同時擁有調試版和發行版文件夾,並且該dll必須位於正確的文件夾中。請發佈您收到的錯誤消息。 – jdweng
問題中的信息不對。錯誤代碼127是在調用'GetProcAddress'後得到的'ERROR_PROC_NOT_FOUND'。此外,爲什麼要調用'LoadLibrary'來加載DLL,但是使用p/invoke作爲該DLL中的函數'piplmc1_Initial'。如果你使用後者,那麼你不需要明確地使用'LoadLibrary',框架可以爲你處理。看來你並沒有把整個故事告訴我們。請直接瞭解事實,並顯示[mcve]。 –
嗨,名稱似乎是正確的DLL導出查看器,當然DLL文件是在調試文件夾(我只在此刻使用此文件夾)。 – Jerome