logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak skompilować moduł C do DLL i zintegrować z Delphi?

lukzak2298 06 Lut 2007 09:15 1650 9
REKLAMA
  • #1 3534347
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    Witam!
    Wpadł mi taki temat, ale ja mam pojęcie tylko o Delphi, Bascom, PHP, HTML, SQL. Próbuję już na różne sposoby od ponad 1,5 roku i nic mi z tego nie wychodzi!

    Sprawa wygląda tak. Jest sobie program (notabene specjalistyczny i bardzo drogi który to program ma moduł który chciałbym skompilować - patrz załącznik). Producent jedyne co udostępnia to ten kod (patrz załącznik).

    Proszę o podpowiedź - jak i w czym to można skompilować? Z tego co mi wiadomo to ten kod może pobierając dane z tego programu przetwarzać je (co do tego to nie jestem pewien) i wysyłać zpowrotem wyniki. Chciałbym żeby te dane były przetwarzane w programie w delphi który sam napiszę, oczywiście zakładając że będzie się dało w jakikolwiek sposób porać i wysłać ciągi znaków z/do tego modułu który chce skompilować.

    Moduł ma być w postaci chyba DLL, wskazuje się go w programie głównym.

    Czyli reasumując:
    PROGRAM <-> moduł <-> mój program <-> zewnętrzne urządzenie (poprzez LAN/RS/itp) - sterownik przemysłowy

    <-> - wymiana danych dwustronna - wszystko to ma działać w czasie prawie rzeczywistym (jest to program symulacyjny, który ma wysyłać dane do tego sterownika i z niego pobierać wyniki) - dane są wysyłane do zewnętrznego urządzenia za pomocą mojego programu, w tym urządzeniu (sterowniku przemysłowym) są przetwarzane i wracają do PROGRAMU głównego.

    część mój program <-> sterownik - wykonać umiem, problem tylko jak skompilować moduł (patrz załącznik) i jak mój program ma się z nim skomunikować???

    A może zamiast mojego programu mam dopisać coś do tego kodu co jest w załączniku żeby on potrafił się łączyć z tym sterownikiem? Mogę to zrobić w delphi? Podobno łączenie kodów jest możliwe w borlandach?

    Narazie to miałem z 6 różnych kompilatorów i w żadnym sie nie udało tego kodu uruchomić :(

    Bardzo proszę o pomoc, wskazówki, sugestie

    Pozdrawiam i z góry dziękuję za wszystko.



    PS
    od producenta PROGRAMU głównego otrzymałem tylko te pliki oraz komentarz:
    Cytat:
    attached please find the latest version of VISSIM's interfaces to
    "virtual" signal controllers on the PC.
    Załączniki:
    • SignalGUI_DLL.zip (8.04 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • SignalControl_DLL.zip (53.45 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 3540156
    Songo
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 1
    Witam,

    informuję, że wszystko się ładnie kompiluje (może 'ładnie' to za dużo powiedziane bo pod VS sprintf jest traktowane jako 'deprecated' ale trudno) pod Visual Studio (w SignalGUI masz nawet projekt z Visual Studio właśnie) do SignalControl trzeba to zebrać razem, ale tak jak powiedziałem kompiluje się (i linkuje) poprawnie, tworząc 2 biblioteki dynamiczne.

    --
    Maciek
  • REKLAMA
  • #3 3540721
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    Czyli reasumując...
    Co muszę mieć żeby to skompilować i w minimum jakiej wersji?

    Wg tego co tam pisze to Visual Studio 7 a takiego nie ma! ;)

    Skoro mówisz że zebrać razem to pewnie utworzyłeś jakiś plik ktorego niema a jest w tym 2gim dll, możesz go podeslac?

    Dzieki za zainteresowanie...
  • #4 3540792
    Faust
    Poziom 17  
    Posty: 135
    Pomógł: 22
    Ocena: 4
    Visual C++ V7 to 2k3.
  • REKLAMA
  • REKLAMA
  • #7 3541102
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    W takim razie kto mi powie w czym? I czy to coś można ściągnąć?

    pytanie podstawowe jednak: W CZYM TO SKOMPILOWAĆ I CO TRZEBA WIEDZIEĆ PRZED SKOMPILOWANIEM (zakładając że zupełnie nie mam pojęcia o C)...

    Pozdrawiam i z góry dziekuję za odpowiedź.

    PS skoro się to udało skompilować to może podrzucisz mi na początek gotowe dll'e?
  • Pomocny post
    #8 3543711
    Songo
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 1
    !? dziwi mnie tyle problemów z tym, zatem

    ja kompilowałem pod Visual Studio 2005 i poszlo (plik projektowy z SignalGUI jest ze starszej wersji ale konwertuje się automatycznie), natomiast tak w ogóle spodziewam się ze VS nie jest potrzebne ... to są proste biblioteki i powinny się kompilować 'praktycznie' wszedzie (przy ew. drobnych modyfikacjach).

    w razie czego odezwij się na gg.

    --
    Maciek
  • #9 3543820
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    w VS 2005 Expres rzeczywiście, skonwertował się, ale przy kompiilacji wyskakuje następujący błąd:

    Cytat:
    1>------ Build started: Project: SignalGUI, Configuration: Debug Win32 ------
    1>Compiling...
    1>SignalGUI.cpp
    1>c:\vissim\signalgui_dll\SignalGUI.h(14) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
    1>Build log was saved at "file://C:\Vissim\SignalGUI_DLL\Temp\Debug\SignalGUI\BuildLog.htm"
    1>SignalGUI - 1 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy kompilacji modułu napisanego w języku C do postaci biblioteki DLL, która ma być integrowana z aplikacją napisaną w Delphi. Moduł pochodzi z drogiego, specjalistycznego programu, a dostępny jest jedynie kod źródłowy. Użytkownik poszukuje informacji, w jakim środowisku i jaką wersją kompilatora można skompilować ten kod, aby moduł mógł komunikować się z głównym programem i zewnętrznym urządzeniem przez LAN lub RS. Wskazano, że kod kompiluje się pod Microsoft Visual Studio, w szczególności Visual C++ 7 (Visual Studio 2003) oraz Visual Studio 2005, choć w wersji Express pojawiają się problemy z kompilacją. Zalecane jest użycie Visual Studio 2005, które automatycznie konwertuje starsze projekty i pozwala na poprawne zbudowanie dwóch bibliotek dynamicznych (DLL). Wskazano również, że kod jest stosunkowo prosty i powinien dać się skompilować w różnych środowiskach po drobnych modyfikacjach. Podano link do konfiguracji Visual C++ Express z Platform SDK, co może pomóc w rozwiązaniu problemów z kompilacją.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA