DLL надстройки Excel COM - Могу ли я использовать непосредственно из C #? - PullRequest
0 голосов
/ 17 января 2012

Прости вопрос, если ответ очевиден. Я, конечно, не эксперт COM.

Итак, у меня есть две библиотеки DLL, которые обычно используются в качестве надстроек в Excel (загружаются непосредственно после того, как Excel открывается программно). Я предполагаю, что они COM. Как я могу определить, являются ли они неуправляемыми C ++ DLL?

Могу ли я использовать в качестве ссылок в проекте C # и вызывать методы напрямую, а не пытаться пройти через Excel? Есть ли какая-нибудь хитрость, чтобы сделать это? Это лучший способ использовать эти методы?

Производительность очень важна для меня, и попытка вызвать код DLL через Excel очень болезненна. Я не уверен, является ли Excel нарушителем или нет, но очевидно, что устранение как можно большего числа касаний посредника является идеальным.

1 Ответ

1 голос
/ 17 января 2012

Я бы предложил выяснить, действительно ли они в первую очередь COM DLL. Вы можете использовать зависящий .exe , чтобы увидеть, экспортирует ли DLL некоторые из ожидаемых COM-функций: DllGetClassObject и DllCanUnloadNow являются хорошими показателями. Если это так, вы можете импортировать DLL непосредственно в ваш проект, используя Visual Studio . Моя интуиция говорит мне, что подход зависит от COM-объекта, поддерживающего OLE-автоматизацию, поэтому ваш пробег может варьироваться.

В противном случае у вас, вероятно, просто старая библиотека DLL. Опять же, выясните, какие функции экспортируются, и используйте p / invoke для получения инструкций о том, как получить правильную подпись.

...