【发布时间】:2019-11-27 01:39:42
【问题描述】:
我有这个大型的 Visual Studio 解决方案,目前是 32 位 (x86),用于使用标准 Windows 库、使用多字节字符集并且没有公共语言运行时支持的应用程序。我的任务是在 64 上编译它位(工作的东西)。我想导入 oleaut32.dll 库,因为它是 64 位的。
当我开始改变项目的平台并编译它时,我得到了一些编译错误(32位函数,链接问题),现在大部分都解决了。问题是它导入了olepro32.dll(这工作在 32 位上),它说它是旧格式或无效类型库(因为它是 32 位库)。
我在网上搜索了它的 64 位版本,发现它是 oleaut32.dll。我尝试导入它,但它不会让我收到错误 C1083:
c:\windows\system32\oleaut32.dll': Error loading type library/DLL.
我试图更改项目属性(从:No Common Language Runtime Support 到 Common Language Runtime Support,它没有工作)。
我在微软网站上查看了错误 C1083 的原因,我怀疑问题是:
- 第三方库问题和 Vcpkg
- 文件可能被锁定或正在使用中
- 包含错误版本的文件名
- 预编译的头文件尚未预编译
- 文件使用托管代码,但编译器选项 /clr 不是 指定的。有关详细信息,请参阅 /clr(公共语言运行时 编译)
- 文件、目录或磁盘是只读的
- Visual Studio 或命令行工具没有足够的 读取文件或目录的权限。
我尝试使用管理员权限运行 Visual Studio,但没有成功。
我发现它是一个COM库,我不知道它是怎么回事。
在 x86 平台上,代码为:
#import <olepro32.dll> rename("FONTSIZE", "FONTSIZE_OLE32") no_auto_exclude include("IFont", "IPicture")
在 x64 平台上我尝试将上面的代码替换为:
#import <oleaut32.dll> rename("FONTSIZE", "FONTSIZE_OLE32") no_auto_exclude include("IFont", "IPicture")
我期待这会顺利运行,因为 oleaut32.dll 是位于 windows32 文件夹中的 64 位库。但我得到了Error loadin DLL
【问题讨论】:
标签: c++ visual-studio dll 64-bit