与DLL混淆。没有.lib或.h

时间:2013-03-11 19:44:05

标签: c++ dll com

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

更新

我通过执行import语句检查它是否是COM。但是我得到了“找不到.tlb文件”。然后我决定使用依赖walker检查任何导出的方法(对象)似乎没有。我点击了主文件(已突出显示),但看不到任何导出的功能。我应该检查下一步的任何提示?这是我从依赖walker得到的。 enter image description here

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

dll很可能是一个.Net程序集(看到它导入了mscoree.dll),所以你可能想要这个:How do I call a .NET assembly from C/C++?