2012-01-17 87 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指導如何獲得簽名的權利。

相關問題