szybka komunikacja dwóch programów w dwóch językach

0

mam program w c a mój kolega ma program w c++(to tylko jeden z moich programów które potrzebują tego rozwiązania) i ponieważ moja biblioteka jest tylko pod c a kolega się upiera żeby jego wzory były w c++(przekonanie kolegi nie wchodzi w grę) to chcę żeby 2 programy miały wspólne zmienne(int i double przeważnie).
1.Czy to możliwe?
2.Jeśli tak to jak?
3.Jeśli nie to gdzie mogę pograć opengl działający na wiapi pod c++?

jakby ktoś odpowiedziałby jeszcze dzisiaj to byłbym wdzięczny :)

1

Jaki OS?
Najszybciej i najprościej będzie wykorzystać komunikację międzyprocesową na poziomie systemu operacyjnego:

  • sygnały
  • pamięć dzielona
  • kolejki
  • sockety
1

Nie powinno być żadnego większego problemu w dołączeniu biblioteki w języku C do programu w C++.

0

@spartanPAGE ... no właśnie mam całą grę oprócz fizyki w c a fizyka w c++ i mam problem z zamianą tego na funkcje... a kolega się upiera na c++ więc zamiana jego programu na funkcje do c też odpada

0

@Niikelion ale co to znaczy że twoja część jest "tylko pod C"? Jaki poprawny kod w C nie kompiluje ci się jako C++?

0

nie nie kompiluje się... moja biblioteka opengl+winapi nie działa w c++ tylko w c a kolega używa biblioteki vector a w c nie ma jej

1

Ale co to znaczy "nie kompiluje się"? Praktycznie każdy kod w C powinien spokojnie skompilować się w C++ pod popularnymi kompilatorami. Jakie błędy masz? W jakim kodzie?

0

dobra zaraz zobaczę

K:\C++\3dtest\main.cpp||In function 'int WinMain(HINSTANCE__, HINSTANCE__, CHAR*, int)':|
K:\C++\3dtest\main.cpp|173|warning: deprecated conversion from string constant to 'char*'|
K:\C++\3dtest\main.cpp|163|warning: unused variable 'i'|
K:\C++\3dtest\main.cpp|163|warning: unused variable 'c'|
K:\C++\3dtest\main.cpp|163|warning: unused variable 'd'|
K:\C++\3dtest\main.cpp|163|warning: unused variable 'e'|
K:\C++\3dtest\main.cpp|164|warning: unused variable 'max'|
K:\C++\3dtest\main.cpp||In function 'void EnableOpenGL(HWND__*, HDC__, HGLRC__)':|
K:\C++\3dtest\main.cpp|407|error: 'pf' was not declared in this scope|
== Build finished: 1 errors, 6 warnings ===

w c nie ma błędu

dobra... chyba działa

... serio? tyle z tym walczyłem i działa w c++? to teraz ten drugi problem... mam konsolkę i uruchamia one dodatkowe procesy(... jakoś tak mi wpadło) i przekazuje im ich polecenia i zmienne... i muszą zwrócić inne dane(taki kalkulator np).. w tym przykładzie z microsoftu nie znalazłem do końca rozwiązania(wiem jak w jednym programie stworzyć zmienną ale nie wiem jak ją odczytać w nim oraz w tym drugim-ktoś objaśni?)

0

Ty sobie robisz jaja? Podałem ci link
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx
Masz tam DWA gotowe kody. Jeden program cośtam zapisuje, drugi odczytuje. Czytałeś to w ogóle? o_O

1

Nie ma problemu żeby w ramach jednego programu część plików była w C a część w C++. Skompilowane pliki .obj można zlinkować do jednego exeka.
Nawet Visual Studio pozwala by w jednym projekcie mieć pliki .c i .cpp

Nie ma potrzeby robienia dwóch programów.

Nagłówek który ma być wspólny dla obu języków powinien wyglądać tak:

#pragma once
#ifdef __cplusplus
extern "C" {
#endif

// ... tu cała treść

#ifdef __cplusplus
}
#endif

i już.

0

... dla mnie wszystko co działa na podstawie więcej niż 5 linijek i nie jest wymyślone przeze mnie jest czarną magią(2 gimbaza)

0

czym kompilujecie ten program? powinno się dać w jednym projekcie mieć pliki .c i pliki .cpp

0

@Azarien okazało się, że program się kompiluje w c++ więc obie części są w c++ i nie ma problemu

1 użytkowników online, w tym zalogowanych: 0, gości: 1