CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z nagłówkiem

Problem z nagłówkiem

dział ogólny

Problem z nagłówkiem

Nowy postprzez beherit » wtorek, 27 stycznia 2015, 01:34

Nawiązując do tego wątku, który niepotrzebnie zamknąłem i nie mogę już z nim nic zrobić, dalej mam problem - postaram się go jaśniej opisać.

Mam dwa pliki: LangAPI.h i LangAPI.cpp (dostępne odpowiednio tutaj: https://www.dropbox.com/s/f3vm8do989qhv ... API.h?dl=0 https://www.dropbox.com/s/kldrqy8yqs1hw ... I.cpp?dl=0). Gdy dołączę te pliki do projektu, to wszystko działa okej i funkcje działają prawidłowo (GetLangStr() i LangForm()). Problem pojawia się kiedy wyrzucę pliki z projektu i dodam ścieżkę do nich do "System Include path", tak aby nie trzeba było ich dodawać za każdym razem do osobnego projektu. Wówczas otrzymuję następujące błędy:

Kod: Zaznacz cały
[ilink32 Error] Error: Unresolved external '_LangPath' referenced from <ŚCIEŻKA>
[ilink32 Error] Error: Unresolved external '__fastcall LangForm(Vcl::Forms::TForm *)' referenced from <ŚCIEŻKA>
[ilink32 Error] Error: Unresolved external '__fastcall GetLangStr(System::UnicodeString)' referenced from <ŚCIEŻKA>


Przeszukałem internety i nie wiem jak to zrobić, aby ten nagłówek z funkcjami zaczął działać.
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez polymorphism » wtorek, 27 stycznia 2015, 10:40

Skompiluj LangAPI.cpp do LangAPI.lib, skopiuj nagłówek i LIB-a do odpowiednich katalogów środowiska. W nagłówku LangAPI.h dodaj:
KOD cpp:     UKRYJ  
#pragma comment(lib, "LangAPI.lib")

To powinno rozwiązać problem...
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
beherit
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z nagłówkiem

Nowy postprzez beherit » wtorek, 27 stycznia 2015, 11:28

A jakiś inny sposób?
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez polymorphism » wtorek, 27 stycznia 2015, 13:24

Nie ma. Zresztą po co Ci inny? Ten, który podałem, pozwoli Ci w prosty sposób, bo tylko poprzez załączenie jednego pliku nagłówkowego, dołączyć bibliotekę LangAPI do projektu. Chyba o to Ci chodziło, nie?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez beherit » wtorek, 27 stycznia 2015, 13:59

No tak ;) Tylko, że mam problem z kompilacją na x64 - już docelowy projekt wykorzystujący tą bibliotekę i plik nagłówkowy i tak krzyczy o dodanie :
Kod: Zaznacz cały
#pragma comment(lib, "LangAPI")

Gdzie dla x86 wszystko jest okej.
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez polymorphism » wtorek, 27 stycznia 2015, 14:13

No to skompiluj bibliotekę do dwóch wersji: LangAPI.lib i LangAPI_x64.lib. W nagłówku daj:

KOD cpp:     UKRYJ  
#if defined _M_X64
#    pragma comment(lib, "LangAPI_x64.lib")
#elseif
#    pragma comment(lib, "LangAPI.lib")
#endif


p.s. Nie wiem, czy makro _M_X64 będzie działać w C++ Builderze. Jeśli nie, poszukaj w dokumentacji czegoś, co będzie odpowiednikiem tego makra.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez beherit » wtorek, 27 stycznia 2015, 14:35

To nie to :( Tym bardziej, że pragma comment(lib, "LangAPI") wskazuje w przypadku x86 na LangAPI.lib a w przypadku x64 na LangAPI.a. Będę jeszcze kombinować, w każdym bądź razie dzięki za pomoc :)
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez polymorphism » wtorek, 27 stycznia 2015, 14:44

Generalnie chodziło mi o pokazanie samej idei. W sumie powinienem dodać tam rozszerzenie do nazw (poprawione).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z nagłówkiem

Nowy postprzez beherit » wtorek, 27 stycznia 2015, 14:45

Udało się, nagłówek musi być .hpp zamiast .h :D
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    Windows 7Firefox


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Majestic-12 [Bot] i 5 gości