Какие виды сборок можно вызвать с помощью P / Invoke? - PullRequest
0 голосов
/ 18 июня 2010

Я уже спросил:

Можно ли вызывать неуправляемый код, используя отражение C # от управляемого кода?

, если можно вызвать библиотеку C / C ++неуправляемая функция с Invoke и отражением от .NET, и ответ - да.Что мне не совсем понятно, так это то, что я могу вызвать с помощью ЛЮБОЙ сборки P / Invoke, написанной / скомпилированной / собранной, с другими компиляторами на моем ПК с Windows, такими как Labwindows / CVI (есть какой-то компилятор C) или Java, написанными на dll, exe.Если это возможно, это так же, как объяснено в приведенной выше ссылке с использованием «Marshal.GetDelegateForFunctionPointer»?

Спасибо!Милан.

1 Ответ

0 голосов
/ 18 июня 2010

С помощью P / Invoke вы можете вызывать только собственные неуправляемые библиотеки DLL, в которых перечислены функции, которые они экспортируют в них. Java-библиотеки управляются, написаны в некотором псевдокоде (например, IL в .net), только виртуальная машина Java знает, как их интерпретировать.

Например, Паскаль Борланда имел свои библиотеки в некоторых файлах "bpl". Приложения на Паскале скомпилировали некоторый загрузочный код, который знал, как загрузить эти библиотеки, но другие приложения не могли знать, как их использовать.

Итак, вы можете использовать собственные dll с экспортом и COM dll.

...