Как мне вызвать функцию другого проекта с открытым исходным кодом в моем проекте в C - PullRequest
0 голосов
/ 22 сентября 2011

Предположим, у вас есть программное обеспечение, написанное на C, скажем, XYZ. Программное обеспечение XYZ является проприетарным программным обеспечением с открытым исходным кодом. Так что я могу иметь источник программного обеспечения. Я могу использовать программное обеспечение, но не могу изменить файлы XYZ.

Предположим, я пишу свое собственное программное обеспечение, скажем, ABC. И это программное обеспечение использует некоторые функции, предоставляемые XYZ.

Теперь в исходном коде XYZ есть функция, которая говорит "static int get_val (int index)". Я хочу использовать функцию get_val (), что мне делать?

Как мне вызвать функцию ??

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

Ты не должен. Ключевое слово static делает функцию локальной для ее единицы перевода (исходный файл, более или менее), что означает, что ее нельзя вызывать из других единиц перевода.

Ну, конечно, вы можете , но это может быть не очень хорошая идея.

Существует два способа сделать функцию доступной:

  1. Экспортируйте его из модуля, удалив ключевое слово static и добавив его в заголовочный файл API. Это, конечно, будет связано с изменением исходного источника.
  2. # включает файл в ваш собственный исходный файл, что делает его частью вашей собственной единицы перевода. В зависимости от того, какие другие зависимости этот файл может иметь, это может быть или не быть жизнеспособным вариантом. Я был бы очень осторожен с этим, но это вариант.
0 голосов
/ 22 сентября 2011

Если проект XYZ с открытым исходным кодом

  • добавить исходные файлы проекта XYZ к себе и скомпилировать все вместе
  • если вы что-то измените в проекте XYZ, рассмотрите возможность отправки сообщения авторам проекта с вашими изменениями: им может понравиться то, что вы сделали, и включить в будущую версию

Если проект проприетарный, у вас нет исходного кода. Функция, определенная как static ..., не отображается в других единицах перевода, поэтому ее вообще не вызывать.

0 голосов
/ 22 сентября 2011

Создание общей библиотеки (DLL или .so) из XYZ. Скорее всего, уже есть общая библиотека. Свяжите свой код, то есть ABC с XYZ, и вы можете начать использовать функции, предоставляемые XYZ, в вашей программе. Все программное обеспечение с открытым исходным кодом поставляется с очень хорошим readme и инструкциями, которые помогут вам использовать программное обеспечение. Начните проверку с этих руководств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...