我目前有一个使用32位dll的C#项目。我想要做的是在C ++项目中使用dll,遗憾的是项目中引用的dll没有.h或.lib文件,所以我对如何访问dll中的类或使用我感到困惑我在C ++项目中的DLL文件(Visual Studio 2010)。我读了here如果一个dll文件包含类很可能它可能是一个COM组件。关于我应该看什么以便集成和使用该DLL中的方法和对象的任何建议。
更新
我通过执行import语句检查它是否是COM。但是我得到了“找不到.tlb文件”。然后我决定使用依赖walker检查任何导出的方法(对象)似乎没有。我点击了主文件(已突出显示),但看不到任何导出的功能。我应该检查下一步的任何提示?这是我从依赖walker得到的。
答案 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++?