Звоните методы C от C++/Java/C# кодируют?

Многие сегодняшние языки программирования основаны на C; как C++, C#, Java, Objective C. Таким образом, я мог назвать метод C из кода C++? Или назовите C от Java или C#? Или эта цель вне досягаемости и неблагоразумна? Включайте быстрый пример кода для мой и все понимание else.

8
задан Mohit Deshpande 13 June 2010 в 07:49
поделиться

4 ответа

Все C ++, C #, Objective-C и Java могут вызывать подпрограммы C. Вот несколько ссылок, которые дадут вам обзор процесса, необходимого для вызова C с каждого языка, о котором вы спрашивали.

5
ответ дан 5 December 2019 в 20:14
поделиться

Пример вызова C из C++. Запишите эту функцию языка Си в файл под названием a.c:

int f() {
   return 42;
}

и скомпилируйте его:

gcc -c a.c

что приведет к созданию файла под названием a.o. Теперь напишите программу на Си++ в файл под названием main.cpp:

#include <iostream>
extern "C" int f();

int main() {
   std::cout << f() << std::endl;
}

и скомпилируйте и соедините с:

g++ main.cpp a.o -o myprog

что приведет к созданию исполняемого файла под названием myprog, который при выполнении печатает 42.

2
ответ дан 5 December 2019 в 20:14
поделиться

To Call C Methods In Java...

есть ключевое слово "native", в котором вы можете написать машинно-зависимый код на C и вызывать его из Java....

По сути, он создает DLL-файл... затем вы должны загрузить его в свою программу...

хороший пример здесь....

1
ответ дан 5 December 2019 в 20:14
поделиться

Для вызова методов C из Java существует несколько вариантов, в том числе:

  • JNA - собственный доступ к Java. Бесплатно. Легко использовать. Ручное объявление классов и интерфейсов Java параллельно с существующими структурами и функциями C. Медленнее, чем JNI - на несколько сотен наносекунд на вызов.
  • JNI - Собственный интерфейс Java. Бесплатно. Самый быстрый вариант. Требуется слой нативного связующего кода между вашим Java-кодом и нативными функциями, которые вы хотите вызвать.
  • JNIWrapper - Коммерческий продукт, похожий на JNA.
0
ответ дан 5 December 2019 в 20:14
поделиться