【发布时间】:2016-11-04 21:33:45
【问题描述】:
我正在尝试使用“cards.dll”模块来创建一个视觉纸牌游戏,尽管我可以考虑使用谷歌搜索,但我似乎无法弄清楚。我有 DLL 文件(203,024 字节),但我对“注册”为 .NET 或 COM 程序集感到困惑。我试过了:
结果: 该模块应包含程序集清单。 (HRESULT 异常:0x80131018)
我也将 DLL 复制到 C:\Windows\System32 和 C:\Windows\SysWOW64 文件夹中,但无济于事。
我正在(或至少尝试)在具有 i5 内核的 64 位 Windows 10 机器上运行它。
【问题讨论】:
-
周围有很多不是 COM 服务器的 DLL,因此不包含类型库,也不是 .NET 程序集,因此不包含元数据。使用 Dumpbin.exe /exports 查看它是否包含您可以 pinvoke 的任何导出函数。在 VS 中使用 File > Open > File 并选择 DLL 以查看它是否包含任何非托管资源。位图很可能。有人拥有这方面的版权,给他们打电话。
-
dumpbin 显示没有导出的项目。这是 Visual Studio 显示的内容:prntscr.com/d36tvb 我不认为这是一个神秘的文件 - 它被宣传为标准游戏(如纸牌)使用的 dll 文件。
-
Cards.dll 很可能不是 COM 库。它很可能是不需要注册的标准 DLL。当然,除非它最近被无缘无故地重写,因为它早在 .NET 出现之前就已经存在了。它也不包含导出,因为它不包含任何函数,这将是反对重写它的另一个论点。它充满了资源(图像),但没有可执行代码,正如您的垃圾箱所示(请参阅 .rsrc 条目)。
-
这是否意味着我可以找到其中的图像,但不能找到其他地方宣传的“cdtInit()”函数?
-
我从未见过 DLL 的任何 advertised 函数,所以我不知道您指的是什么。您的 dumpbin 映像中没有显示导出的函数,这意味着您正在使用的 DLL 中没有
cdtInit函数可供您调用。根据我(多年前)的经验,DLL 中没有可执行功能;它充满了卡片正面和各种卡片背面的资源(位图)。 (您显然不知道如何使用 @ 联系对您发表评论的人;幸运的是我在您的帖子前停下来,否则我永远不会看到您的问题。)
标签: c# .net-assembly