0

我目前有一个使用 32 位 dll 的 C# 项目。我想做的是在 C++ 项目中使用 dll,不幸的是,项目中引用的 dll 没有附带 .h 或 .lib 文件,所以我对如何访问 dll 中的类或使用感到困惑我的 C++ (Visual Studio 2010) 项目中的 dll 文件。我在这里读到,如果一个 dll 文件包含类,它很有可能是一个 COM 组件。关于我应该查看什么以便在该 dll 中集成和使用方法和对象的任何建议。

更新:

我通过导入语句检查它是否是 COM。但是我得到一个“找不到 .tlb 文件”。然后我决定使用依赖walker来检查任何导出的方法(对象),似乎没有。我单击了主文件(已突出显示)并且看不到任何导出的函数。关于下一步我应该检查什么的任何提示?这是我从依赖步行者那里得到的。 在此处输入图像描述

4

2 回答 2

5

只有一个 .dll 而没有相应的 .h 或 .exp,您可能会尝试查找的一个地方是导出表。Dependency Walker等工具可以向您显示此信息。

Dependency Walker 的一个警告是,您需要为二进制文件(您的 DLL)使用正确的版本(x86 或 x86_64)。如果您不确定,请选择一个版本并尝试加载它。在中央面板的 CPU 列下,查看它是否显示“x64”或“x86”,以确定您应该使用哪一个。

使用提供的 Dependency Walker 屏幕截图(表明依赖于 MSCOREE.DLL),我同意 Eugene 的观点——这很可能是一个 .NET 库,而不是 COM 库。您将需要检查有关从 C/C++ 调用 .NET 托管代码的其他问题之一。

于 2013-03-11T19:51:43.893 回答
0

dll 很可能是一个 .Net 程序集(看到它导入 mscoree.dll),所以您可能想要这个:如何从 C/C++ 调用 .NET 程序集?

于 2013-03-11T23:45:39.067 回答