Я написал программу, и я хочу связать ее с другой программой c. В том смысле, с помощью включения или любой другой директивы мне нужно связать программы, так что последняя из них может быть вызвана функцией первого. Как я могу это сделать в кодовых курсах?Загрузка программы c в другую
ответ
Предположим, у вас есть две программы A и B. А в A у вас есть функция c
. Итак, переместите c
, чтобы разделить файл c.c
и сделать файл c.h
, который может быть включен в обе программы A и B как #include "c.h"
. Затем компилируйте A и B самостоятельно.
Это будет самый простой способ.
EDIT:
Все функции, которая использует один другой должен быть в "библиотеке". Например .:
// c.h
int c(int x1, int x2); // this will be called from outside
extern int callCount; // to be available outside
и
// c.c
#include "c.h"
int d(int x); // this cannot be called from outside
// global variable to count calls of c function
int callCount = 0;
int c(int x1, int x2)
{
callCount++; // changing of global variable
return (x1 + x2) * d(x1);
}
int d(int x)
{
return x * x;
}
и использование
// prog A
#include <stdio.h>
#include "c.h"
int main(void)
{
int a = 1, b = 2;
printf("c = %d\n", c(a, b));
printf("c = %d\n", c(2*a, b - 1));
printf("Function c was called %d times\n", callCount);
return 0;
}
Все функции, которые вы планируете звонить из других файлов должны быть объявлены в час-файле. Это общий подход, но также можно найти множество советов в Интернете, таких как static
функции, #define
детективы и условная компиляция и т. Д.
На самом деле, мне может понадобиться более 1 функции, и все функции связаны. Так что есть способ, которым я могу включить весь A в B. Также, как делаются «ch» файлы – APD
@AnkitaPrasad: подумайте над тем, какую функцию следует вызывать извне и помещать свои объявления в h-файл ... см. Пример в ** edit **. Просто попробуйте прочитать сообщения компилятора и компоновщика – VolAnd
Как создается файл с расширением .h? – APD
Это (загрузка программы C в другом) не может быть строгого контроля , поскольку в любой заданной программе есть только одна функция main
. Однако функции system(3) & popen(3) позволяют запускать другую программу - через командную строку - с первой. В системах Linux и POSIX вы также можете запустить процесс, используя fork(2), и вы можете выполнить программу в process с использованием execve(2). Конечно, это зависит от операционной системы!
Однако в некоторых операционных системах и платформах, вы можете использовать dynamic linking загрузить некоторые plugin в выполнения. Загруженный плагин не a программа (у него нет функции main
), но library.
Например, на Linux и POSIX системы, вы можете использовать функцию dlopen, чтобы загрузить плагин (часто некоторые shared library), а функция dlsym, чтобы получить символ внутри него.
В Linux dlopen
загружает общий объект ELF, который должен содержать position-independent code.
PS. Вы также можете связать библиотеку (время сборки) с вашей программой.
- 1. C# загрузка программы C++ COM
- 2. Вывод трубы программы C++ в другую программу
- 3. Отладка программы, запускающей другую программу
- 4. Получить переменную из одной программы в другую
- 5. Вывод трубы из одной программы в другую
- 6. Загрузка программы в teensy не работает
- 7. Изменить другую переменную программы на C++ в Windows
- 8. как передать некоторую «статистику» из программы C# в другую программу?
- 9. Передача кода на C++ из одной программы в другую
- 10. Загрузка данных из программы
- 11. Использовать переменные из одной программы в другую
- 12. Загрузка общих библиотек при запуске программы в c вместо ссылки
- 13. Динамическая загрузка DLL в другую DLL
- 14. Выполнение программы в C
- 15. Загрузка констант при запуске программы
- 16. Выполнение программы из программы C
- 17. Загрузка изображения из аргументов программы
- 18. Использование выбранного выхода программы C# для другой программы C#
- 19. Загрузка программы в другой сектор на emu8086
- 20. Загрузка программы из оперативной памяти в 8086
- 21. Простая загрузка программы Android в Интернет
- 22. Ошибка Загрузка программы в emualor (Android Studio)?
- 23. Загрузка программы в econotag (contiki 2.7)
- 24. Загрузка javascript-файла в другую конечную точку
- 25. Загрузка изображения CakePHP в другую таблицу
- 26. Загрузка частей структуры в другую структуру
- 27. Загрузка из текстового файла при запуске программы
- 28. Выполнение программы из другой программы в C
- 29. Сохранение состояния программы и загрузка снова
- 30. Загрузка spec.opts при тестировании чистой программы Ruby
Оба не могут иметь функцию main(). – vvvv
Кажется, что одна из ваших программ должна стать библиотекой (необходима редизайн). Но, может быть, вы говорите о межпроцессной коммуникации ... Уточняйте вопрос – VolAnd
В принципе, предположим, что я написал программу A с функцией c. Теперь я пишу программу B. Теперь я хочу, чтобы программа A была включена или импортирована в программу B, чтобы я мог вызвать c и использовать ее результат в B.Он не включает отправку или получение, просто изменение в файлах заголовков, поэтому это не межпроцессное общение. – APD