【发布时间】:2015-07-01 03:57:25
【问题描述】:
所以there are couple of questions 询问了这件事。有 x86、x64 辅助项目,它引用在 x86 上创建的另一个项目,并基于基于 x86 构建的第三方 .dll。
整个 DLLImport 和 marshal call com 包装器是使用升级工具创建的。它将 VB6.0 升级为 .Net 代码。只要使用 x86 构建发布d,最终的 .exe 就会在每台 PC 上安装和运行。但在 AnyCPU 配置上构建时会失败。
当 AnyCPU 构建完成并执行程序时,代码不断在第三方 .dll 上抛出错误,并抱怨找不到 .dll。在 x86 上构建时,这些问题都不存在。这是一个实际问题,因为该应用程序适用于 Windows Embedded Standard OS 和从 Windows XP 开始的大多数 Windows 操作系统上的设备。
错误:
System.DllNotFoundException was unhandled HResult=-2146233052
Message=Unable to load DLL 'posLTD.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Source=ProjectOne TypeName="" StackTrace:
at PorjectOne.PInvoke.UnsafeNative.POSLTD.ConnectToDevice(Int32 nMachineNo, String& strIpAddress, Int32 nNetPort, Int32 nTimeOut, Int32 nProtocolType, Int32 nNetPassword, Int32 nLicense)
可以做些什么来解决这个问题?这可能是设备操作系统兼容性问题吗?
【问题讨论】:
-
第三方dll的构建类型是什么?它是基于 x86 的吗?您收到的错误信息是什么?
-
您需要提供更多信息:确切的错误信息、所涉及的工具等。
-
“Can't find the thirdparty .dll when build is Any PC”是您在构建控制台中看到的错误消息吗?
-
如果您在任何 CPU 构建上使用基于 x86 的库,它将无法工作。确保使用与应用程序的构建类型匹配的库。
-
检查您的应用程序的安装要求是否满足 POS 操作系统。无论如何,POS OS 上出现了什么样的问题?
标签: c# dll build-process x86-64