如何从64位dll生成64位Interop?

时间:2018-01-10 16:12:14

标签: dll 64-bit interop tlbimp

我在使用工具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但我觉得我没有提供足够的信息,或者我会以某种方式部署这个问题,因为我希望它更清楚。如果管理员有问题,请删除另一个,然后离开。感谢。

1 个答案:

答案 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

对我来说,这似乎是一个微软的错误。