[英]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.