2015-01-09 4 views
-3

К примеру, у меня есть простая программа, как это:Как создать внешний API для программы?

//Program A 
#include <stdio.h> 

int add(int a, int b) 
{ 
    return a + b; 
} 

int sub(int a, int b) 
{ 
    return a - b; 
} 

int main(void) { 
    doSomeStuff(); 
    return 0; 
} 

Я начал это, и это работает. И есть программы Б. Мои вопросы:

  1. Как я могу подключиться из моей программы В к программе А и попросите его запустить, например, функция добавления?
  2. Как я могу написать внешний API для всегда запускаемой программы A?

Или, может быть, аналогичный пример, подумайте о какой-то базе данных и драйвере для нее. Как драйвер может запрашивать базу данных?

+0

Чем более конкретны ваши вопросы, тем лучше мы можем помочь. – CephBirk

+1

Вы хотите * называть * функции, такие как 'add' и' sub' здесь, другими словами создавать * библиотеку *? Или вам нужно запустить эту программу и вызвать функции как * удаленные вызовы процедур * (используя любой протокол RPC)? Или что? – hyde

+1

Возможно, вам стоит подумать о том, как * программа A и программа B соединяются. Они в одном процессе? Тот же компьютер? Какой протокол они используют для разговора? –

ответ

1

Вы должны создать динамическую библиотеку. Для Windows это .DLL. В мире Unix также существует, но я не эксперт. DLL экспортирует некоторые функции (API). Когда ваш EXE-файл использует некоторые из них, DLL загружается ОС во время выполнения, а необходимые функции «подключены» (т. Е. Вызовы функций в EXE перенаправляются в точки входа загруженной DLL). Вы можете найти пример DLL, например. в Codeproject.com.

Смежные вопросы