繁体   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