簡體   English   中英

使用C ++ Builder時VC ++ Dll在Windows XP Sp3上不起作用

[英]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 ++可再發行組件包。

有什么建議嗎?

您需要按照文檔中的說明實施正確的錯誤檢查。

  1. 測試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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM