2012-01-17 52 views
0

原谅问题的答案是否明显。我当然不是COM专家。Excel COM加载项DLL的 - 我可以直接使用C#吗?

所以我有两个DLL通常用作Excel的加载项(在以编程方式打开Excel后直接加载)。我假设他们是COM。我怎么知道他们是不是托管的C++ DLL?

是否有可能将我用作C#项目中的引用,并直接调用方法而不是尝试通过Excel?这样做有什么窍门吗?这是利用这些方法的最佳途径吗?

性能对我来说很重要,试图通过Excel调用DLL代码非常痛苦。我不确定Excel是否是罪犯,但显然要尽可能地消除中间人接触的情况是理想的。

+0

您正在使用哪些DLL? – 2012-01-17 17:14:36

+0

这些都是在我公司编写的专有DLL,可能是也可能不是非托管C++ DLL - 无法分辨。基于一些Google搜索,似乎几乎不可能在没有商业工具的情况下逆向调用DLL代码。 – PatternMatching 2012-01-17 17:31:52

回答

1

我会建议找出他们是否确实是COM DLL首先。您可以使用depends .exe来查看DLL是否导出了一些预期的COM函数:DllGetClassObjectDllCanUnloadNow是很好的指标。如果是这样,您可以使用Visual Studio将DLL直接导入到项目中。我的直觉告诉我,这种方法取决于支持OLE自动化的COM对象,所以你的里程可能会有所不同。

否则,你可能只是有一个普通的旧DLL。再次,找出哪些功能导出,并使用p/invoke指导如何获得签名的权利。

相关问题