我在使用工具TlbImp.exe
生成Interop时遇到问题输入dll是64位,但输出Interop是32位。 我无法控制输入dll,它由第三部分给出。
我已经下载了dumpbin功能并测试了两个dll。
一个。命令:
@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\TlbImp.exe" "C:\Program Files\SAP\SAP Business One DI API\DI API 90\SAPbobsCOM90.dll" /out:"%CD%\SAPbobsCOM.dll"
B中。输入64位dll dumpbin:
Dump of file C:\Program Files\SAP\SAP Business One DI API\DI API 90\SAPbobsCOM90.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
8664 machine (x64)
6 number of sections
59C18858 time date stamp Tue Sep 19 23:12:56 2017
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL
OPTIONAL HEADER VALUES
20B magic # (PE32+)
℃。输出Interop dll dumpbin:
Dump of file C:\Users\dariuszg\Desktop\dllki 64 bitowe\Interop.SAPbobsCOM.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
14C machine (x86)
3 number of sections
5A5628D1 time date stamp Wed Jan 10 15:53:05 2018
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL
OPTIONAL HEADER VALUES
10B magic # (PE32)
d。我试图修改我正在使用的命令,如下所示:
@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\TlbImp.exe" "C:\Program Files\SAP\SAP Business One DI API\DI API 90\SAPbobsCOM90.dll" /out:"%CD%\Interop.SAPbobsCOM.dll" /namespace:SAPbobsCOM /machine:X64
然后我收到这样的错误:
TlbImp : error TI2010 : A single valid machine type compatible with the input type library must be specified.
请告诉我如何克服此错误? 我想从64位库生成64位Interop dll。我相信这是可能的。如果在没有改变输入dll的情况下做到这一点,请告诉我这个。然后我需要报告第三方公司。但在此之前,我确信无法克服这一点。
我也提到了这个问题:Generate 64 bit Interop issue但我觉得我没有提供足够的信息,或者我会以某种方式部署这个问题,因为我希望它更清楚。如果管理员有问题,请删除另一个,然后离开。感谢。
答案 0 :(得分:0)
在64位COM dll上运行Windows 32位上的tlbimp时,我遇到了类似的问题。
当我在Windows 64上运行相同的命令时,互操作生成成功。
TlbImp:导入到[cut] \ x64bin \ Interop的类型库。[cut] .dll
TlbImp版本是相同的:Microsoft(R).NET Framework类型库到汇编转换器4.6.1055.0
对我来说,这似乎是一个微软的错误。