[英]VC++ Dll Not Working On Windows XP Sp3 When Using C++ Builder
我已經在Visual Studio 2013中創建了VC ++ Dll。
extern "C" int __declspec(dllexport) __cdecl ConvertImageToText(char* dataPath, char* imageFilePath, char* captchaCode)
{
// to do
return 0;
}
我在這樣的Borland C ++ Builder 6中使用。
HMODULE dllHandle = LoadLibrary("Captcha.dll");
int (__cdecl *ConvertImageToText)(char*,char*,char*);
ConvertImageToText =(int (__cdecl *)(char*,char*,char*))GetProcAddress(dllHandle, "ConvertImageToText");
if (ConvertImageToText != NULL )
{
ConvertImageToText("","","");
}else
{
ShowMessage("ConvertImageToText pointer not found !");
}
在win7 / 8 / 8.1中運行良好。沒有任何問題。
但是在Windows XP SP3上找不到ConvertImageToText的指針。
我已將VC ++ Dll項目“平台工具集”更改為“ Visual Studio 2013-Windows XP(v120_xp)”。沒有任何更改。
我已經檢查了Visual C ++可再發行組件包。
有什么建議嗎?
您需要按照文檔中的說明實施正確的錯誤檢查。
LoadLibrary
的返回值。 NULL
表示失敗。 如果是這樣,請調用GetLastError
以獲取擴展的錯誤詳細信息。 E.測試GetProcAddress
的返回值。 NULL
表示失敗。 如果是這樣,請調用GetLastError
以獲取擴展的錯誤詳細信息。 LoadLibrary
可能失敗,因為您的DLL鏈接到目標計算機上未安裝的運行時,或者因為您的DLL鏈接到XP上不存在的Win32 API函數。
如果無法從此處解決問題,則可以使用Dependency Walker進行額外的調試。 在概要文件模式下使用它可以調試加載程序嘗試加載DLL的嘗試。 這將揭示足夠的信息來診斷問題。
我已經安裝了該redist版本。 有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.