婷婷丁香激情五月,女老师电影全集免费看,天天五月天,九九视频这里只有精品,九九福利视频,聊斋艳谭8陆判性水仙

白云一鍵重裝系統2025 最簡單好用的系統重裝軟件 全網獨家技術/支持GPT-UEFI一鍵裝機 完美兼容市面所有主板 支持安裝windows XP/7/8/10/11 系統

當前位置:主頁 > 系統幫助 > 寫DLL文件失敗顯示找不到指定的模塊怎么解決的教程

寫DLL文件失敗顯示找不到指定的模塊怎么解決的教程

2017-11-06 10:56:16 分類:幫助
  很多用戶在使用開發程序寫DLL文件時可能都遇到過“LoadLibrary failed with error126:找不到指定的模塊。”的錯誤提示,這是怎么回事呢?有什么方法可以解決這個問題呢?下面就跟小編一起來看看寫DLL文件失敗顯示找不到指定的模塊怎么解決的教程。

寫DLL文件失敗顯示找不到指定的模塊怎么解決步驟

  一、出現LoadLibrary失敗的原因
  通常LoadLibrary失敗的原因大多是代碼書寫不規范,編寫dll文件一般不是很難,但關鍵是在寫dll的時候代碼不規范,這樣在調用時就有可可能出現這樣那樣的問題,出現LoadLibrary失敗也就不足為怪了,為了保證你使用正確的調用規范,要通知編譯器使用stdcall規范和/或使用在windows.h(及相關文件)中定義的常量,如WINAPI等。通常DLL的代碼如下:

WORD WINAPI vbShiftRight(WORD nValue, WORD nBits)
{
return (nValue >> nBits);
}

  下一步是與你在微軟文檔中讀到的內容相反。你需要創建一個DEF文件。這是你防止輸出函數名不出現亂字符的唯一方式(如_vbShiftRight@1)。DEF文件的形式如下:

EXPORTS
vbShiftRight

  下一步是在VB中調用這個函數,使用以下聲明:

Declare Function vbShiftRight Lib "MYDLL.DLL" (ByVal nValue As Integer,
ByVal nBits As Integer)
As Integer
Sub Test()
Dim i As Integer
i = vbShiftRight(4, 2)
Debug.Assert i = 1
End Sub
  如果你還想要更容易的方法從VB中調用,可以創建一個類型庫。為此你需要創建和編譯ODL(對象描述語言)文件。這個文件應該包含如下內容:
module MyModule {
[
helpstring("Shifts the bits of an integer to the right."),
entry("vbShiftRight")
]
short _stdcall vbShiftRight([in] short nValue, [in] short nBits);
};

  當VB加載DLL的類型庫時,函數名和參數將出現在VB的對象瀏覽器中。此外,如果用戶不輸入正確的參數類型,VB將有可能產生LoadLibrary失敗錯誤。
  還有就是你最好用正確的方法調用dll,以下是我正常調用dll的函數:

typedef void __declspec(dllimport) StartQueryForm(TDispatchConnection*,TApplication*);
StartQueryForm* query;
char buf[256];
if (!GetSystemDirectory(buf,256)) {
Application->MessageBox("讀取系統目錄錯誤","錯誤",MB_OK+MB_ICONERROR);
return ;
}
AnsiString sCmd=AnsiString(buf)+"\\QueryEnh.dll";
復制代碼
HINSTANCE Package = LoadLibrary(sCmd.c_str());
if (Package)
{
try {
query = (StartQueryForm *)GetProcAddress((HINSTANCE)Package, "_StartQueryForm");
if (query) {
TDispatchConnection* conn=(MainForm->ConnectionWay==1 ?
(TDispatchConnection*)MainForm->dcomConnect:
(TDispatchConnection*)MainForm->sockConnect);
query(conn,Application);
}
else {
AnsiString str="加載函數失敗,失敗原因:\n\r";
str+=SysErrorMessage(GetLastError());
Application->MessageBox(str.c_str(),"錯誤",MB_OK+MB_ICONERROR);
}
}
__finally {
FreeLibrary(Package);
}
}
else
{
AnsiString str="加載庫失敗,失敗原因:\n\r";
str+=SysErrorMessage(GetLastError());
Application->MessageBox(str.c_str(),"´íÎó",MB_OK+MB_ICONERROR);

  二、出現LoadLibrary失敗解決辦法
  方式一:采用LoadLibraryEx
  若DLL不在調用方的同一目錄下,可以用LoadLibrary(L“DLL絕對路徑”)加載。但若調用的DLL內部又調用另外一個DLL,此時調用仍會失敗。
  解決辦法是用LoadLibraryEx:
  LoadLibraryEx("DLL絕對路徑", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
  通過指定LOAD_WITH_ALTERED_SEARCH_PATH,讓系統DLL搜索順序從DLL所在目錄開始。
  方式二:采用SetCurrentDir
  跨目錄調用dll,你應該這樣
  1、用GetCurrentDir保存當前的工作目錄
  2、用SetCurrentDir將當前的工作目錄,設置為你的DLL所在的路徑,需要使用絕對路徑
  3、用LoadLibrary你的DLL
  4、使用SetCurrentDir恢復到原來的工作路徑
  以上就是寫DLL文件失敗顯示找不到指定的模塊怎么解決的教程,一般有問題都可以在網上查找解決方法,有需要的用戶可以保存這篇教程。更多教程請繼續關注白云幫助中心
標簽: 系統教程
重裝系統幫助
U盤裝系統
優白云U盤裝系統

聯系我們 | 關于我們 | 網站地圖 | 白云一鍵重裝系統QQ群

提供一鍵重裝系統win7旗艦版,一鍵重裝xp系統,以及重裝win10專業版的重裝系統軟件以及系統重裝的相關教程
Copyright@2019-2024白云系統 版權所有. All Rights Reserved. ?備案號:粵ICP備20000429號
白云一鍵重裝系統唯一網址:www.8e8u.cn

主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃欧美 | 国产亚洲视频在线观看 | 国产高清成人mv在线观看 | 五月在线视频 | 20分钟以上免费好看电影 | 久久亚洲日本不卡一区二区 | 国产日韩第一页 | 多哥 电影 | 成年女人黄小视频 | 福利区在线观看 | 精品国产成人综合久久小说 | 久久成人国产精品免费 | 短视频网站免费观看 | 在线观看激情 | 99re在线视频播放 | 李丽珍电影免费观看全集 | 国产99区| 玖玖视频精品 | 免费人成年激情视频在线观看 | 久久香蕉国产视频 | 免费一级毛片在级播放 | 日日av| 国内自拍中文字幕 | 国产日韩精品一区在线不卡 | 欧美自拍视频在线 | 成 人 黄 色 视频 免费观看 | 色爱综合区 | 国产亚洲精品成人婷婷久久小说 | 激情4p| 黄色视屏在线播放 | 黄色小视频在线看 | 99爱这里只有精品 | 久久伊人热 | 国产99欧美精品久久精品久久 | 99精品免费在线观看 | 四虎国产精品免费观看 | 国产精品网址你懂的 | 国产精品一区二区手机在线观看 | 99精品观看 | 精品国产区 | 深爱激情婷婷 |