【发布时间】:2015-12-16 14:33:41
【问题描述】:
我正在 VS2013 上创建一个应用程序,它使用 vspdctl.dll 创建虚拟串行端口对。此虚拟端口用于与我的 PC 上运行的其他应用程序进行通信。
.exe 文件在我使用 Platform=win32 配置编译/链接时已成功创建,并且虚拟端口创建工作正常。 注意:我的机器是 x64
当我更改平台=x64 时,我的 exe 再次创建,没有任何问题,但仍然无法加载 dll。它让我感觉 vspdctl.dll 是一个 32 位的库。
但我打算在代码中使用其他 64 位库,这就是为什么我也希望在 64 位应用程序中实现 vspdctl.dll。是否有任何 64 位版本的 vspdctl.dll 或如何在 64 位应用程序中实现 32 位 dll。
任何帮助将不胜感激。 谢谢
这是我加载 dll 的 CreateVSPair 函数的代码
char CreateVSPair(char *Port1, char *Port2) {
OSVERSIONINFO VersionInfo;
HINSTANCE libInst;
libInst = LoadLibrary(L"C:\\AK47 Data\\Softwares\\SP monitor\\vspdctl.dll");
if (!libInst)
{
libInst = LoadLibrary(L"C:\Windows\SysWOW64\\vspdctl.dll");
if (!libInst)
return -10; /* Couldn't load library */
}
/* Substitute the typedefs above for functions other than CreatePairFn */
std::string s("CreatePair");
CreatePairFn CreatePair = (CreatePairFn)GetProcAddress(libInst, s.c_str());
if (CreatePair == 0) return -20; /* Couldn`t find function */
bool returnvalue = CreatePair(Port1, Port2); /* For example, Port1 = "COM5" and Port2 = "COM6" */
FreeLibrary(libInst);
return returnvalue;
};
【问题讨论】:
-
使用属性错误处理,调用GetLastError()获取LoadLibrary()失败的原因。并使用电话,致电供应商寻求支持。
标签: visual-studio dll 64-bit platform virtual-serial-port