CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z linkerem [Linker Error] Unresolved external...

Problem z linkerem [Linker Error] Unresolved external...

dział ogólny

Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez kriss » wtorek, 5 kwietnia 2011, 01:22

Witam!

Próbuję od paru godzin napisać prosty programik który zapisuje pliki .wav przy użyciu libsndfile. Próbowałem dodać bibliotekę do projektu na wiele sposobów i ciągle mam ten sam problem.


[Linker Error] Unresolved external '_sf_open' referenced from C:\PROGRAMY\UNIT1.OBJ



Próbowałem dodawać plik .lib do projektu (przed dodaniem trzeba było użyć coff2omf), próbowałem też plik nagłówkowy sndfile.h wrzucić do katalogu z programem i dać #include "sndfile.h" do plików Uni1.cpp i Unit1.h. Potem pomyślałem, że wrzucę te pliki do katalogów C++ Buildera (Lib, Include) i zmienić #Include <sndfile.h> lecz to też nic nie pomogło. Próbowałem też z pliku .dll utworzyć plik .def, z pliku .def plik .lib, lecz pojawił się błąd - dlatego wykorzystałem pliki domyślnie dołączone do paczki instalacyjnej biblioteki.

Nie mam już pomysłu co może być nie tak.
Ostatnio edytowano wtorek, 5 kwietnia 2011, 08:45 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Dla komunikatów błędów jest tag [error] błąd [/error]
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 08:39

kriss napisał(a):Próbowałem dodawać plik .lib do projektu (przed dodaniem trzeba było użyć coff2omf),


Dodawałeś poprzez menu Project -> Add to project, potem plik *.lib o nazwie identycznej jak plik nagłówkowy, czyli u Ciebie sndfile.lib?


kriss napisał(a):róbowałem też plik nagłówkowy sndfile.h wrzucić do katalogu z programem i dać #include "sndfile.h" do plików Uni1.cpp i Unit1.h.


Nie kopiuje się plików nagłówkowych do katalogu aplikacji, muszą pozostać tam gdzie są, gdyż pliki nagłówkowe zawsze powiązane są z innymi plikami, zmieniając ich położenie usuwasz powiązania. Plik nagłówkowy włącza się w sekcji include pliku nagłówkowego np. Unit1.h lub pliku źródłowego np. Unit1.cpp, nigdy w obydwu na raz. By jednak program mógł korzystać z takiego pliku trzeba do globalnych ścieżek dodać ścieżkę dostępu do katalogu w którym ten plik się znajduje.

Dla utworzonej już aplikacji wchodzi się w menu: Project -> Options; sekcja: Directories and Conditionals; opcja: Library patch - klikasz na przycisk [...] i w oknie które wyskoczy dodajesz ścieżkę dostępu do katalogu w którym znajdują się pliki *.lib, potem to samo robisz dla opcji Include patch, ale tym razem dodajesz ścieżkę dostępu do katalogu z plikami nagłówkowymi *.h i *.hpp. Następnie przechodzisz do sekcji: C++ Compiler -> Directories and Conditionals; sekcja Include file search patch i dodajesz tam ścieżki do katalogu z plikami nagłówkowymi.

By w przyszłości uniknąć konieczności dodawania tych ścieżek do każdego nowego projektu wchodzi w menu: Tools -> Options; sekcja: Environment Options -> C++ Options -> Patch and Directories; W opcji Include patch dodajesz ścieżki dostępu do katalogu z plikami nagłówkowymi, a w opcji Library patch z plikami bibliotek *.lib.

Tak to wygląda dla środowiska C++Builder 2010, w C++Builder 6 może to wyglądać trochę inaczej.

Jeżeli mimo tych zabiegów dalej występują problemy z biblioteką libsndfile to znaczy, że albo źle została zainstalowana, albo jest niezgodna ze środowiskiem C++Builder 6.

Komunikat błędu sugeruje problem z biblioteką *.LIB.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez kriss » wtorek, 5 kwietnia 2011, 10:51

Plik .lib zwie się libsnd-1.lib i tak jak napisałeś dodałem go do projektu poprzez menu Project -> Add to project. Natomiast plik nagłówkowy to sndfile.h. Czy mam zmienić nazwę pliku .lib? Próbowałem zrobić tak jak poleciłeś, po instalacji biblioteki nie zmieniałem lokalizacji ich plików tylko dodałem w C++ Builder ścieżki. Nadal występuje ten sam problem.
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 11:50

Próbowałem tego użyć u siebie, ale mam ten sam błąd. Występuje jakaś niezgodność z biblioteką *.LIB. Jeżeli potrzebujesz darmowych bibliotek do obsługi plików multimedialnych to wypróbuj komponenty Mitov Software, które zostały opisane w tym wątku: http://programowanie.cal.pl/forum/viewtopic.php?f=5&t=1306
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez polymorphism » wtorek, 5 kwietnia 2011, 13:33

Próbowałem dodawać plik .lib do projektu (przed dodaniem trzeba było użyć coff2omf) (...)

Zamiast konwertować LIB-a, co nie zawsze zdaje egzamin, wygeneruj go implibem C++ Buildera, wykorzystując do tego plik libsndfile-1.def. Po szczegóły odsyłam do dokumentacji, ewentualnie pytaj ludzi, którzy korzystają z tego IDE.
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 XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 14:15

Próba wygenerowania nowej biblioteki lib za pomocą programu implib skutkuje komunikatem błędu:


Name: 'libsndfile-1' Ext: '.dll' Base: 0x00000000
Error libsndfile-1.def(3): Invalid character in .DEF file



Nie zależnie od użytych parametrów. Generuje się co prawda biblioteka *.LIB, ale o rozmiarze 16 bitów, a próba użycia kończy się komunikatem błędu:

KOD cpp:     UKRYJ  
[ILINK32 Error] Error: Error processing module C:\PROGRAM FILES\MEGA-NERD\LIBSNDFILE\LIB\LIBSNDFILE-1.LIB


Wygenerowanie nowej biblioteki LIB z pliku DLL niczego nie zmienia.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez polymorphism » wtorek, 5 kwietnia 2011, 14:28


Error libsndfile-1.def(3): Invalid character in .DEF file


No to zobacz, co jest w linii trzeciej, być może to jakiś drobiazg.
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 XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 14:43

Zawartość pliku libsndfile-1.def:

KOD text:     UKRYJ  
; Auto-generated by create_symbols_file.py

LIBRARY libsndfile-1.dll
EXPORTS

sf_command           @1
sf_open              @2
sf_close             @3
sf_seek              @4
sf_error             @7
sf_perror            @8
sf_error_str         @9
sf_error_number      @10
sf_format_check      @11
sf_read_raw          @16
sf_readf_short       @17
sf_readf_int         @18
sf_readf_float       @19
sf_readf_double      @20
sf_read_short        @21
sf_read_int          @22
sf_read_float        @23
sf_read_double       @24
sf_write_raw         @32
sf_writef_short      @33
sf_writef_int        @34
sf_writef_float      @35
sf_writef_double     @36
sf_write_short       @37
sf_write_int         @38
sf_write_float       @39
sf_write_double      @40
sf_strerror          @50
sf_get_string        @60
sf_set_string        @61
sf_version_string    @68
sf_open_fd           @70
sf_wchar_open        @71
sf_open_virtual      @80
sf_write_sync        @90
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez polymorphism » wtorek, 5 kwietnia 2011, 15:04

Hmm, zmień trzecią linie na LIBRARY libsndfile.dll.

P.S. Jeśli zadziała, to DLL-ka będzie musiała się nazywać libsndfile.dll.
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 XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 15:32

Tak! Po tej zmianie biblioteka *.LIB została wygenerowana prawidłowo. Pozmieniałem nazwy plików tak by wszystko pasowało, ale niestety - błąd pozostał:


[ILINK32 Error] Error: Unresolved external '_sf_command' referenced from D:\EMBARCADERO_PROJECT_2010\LIBSND_TEST\UNIT1.OBJ
[ILINK32 Error] Error: Unable to perform link

Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez polymorphism » wtorek, 5 kwietnia 2011, 17:31

Ech, no tak, zapomniałem, że ten kompilator dodaje te cholerne podkreślniki. Jeśli dobrze pamiętam, to trzeba coś takiego zrobić:
KOD text:     UKRYJ  
; na końcu pliku DEF, za eksportami

_sf_command=sf_command
_sf_open=sf_open
_sf_close=sf_close

...itd.
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 XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 18:05

Zrobiłem tak:

KOD text:     UKRYJ  
; Auto-generated by create_symbols_file.py

LIBRARY libsndfile.dll
EXPORTS

sf_command           @1
sf_open              @2
sf_close             @3
sf_seek              @4
sf_error             @7
sf_perror            @8
sf_error_str         @9
sf_error_number      @10
sf_format_check      @11
sf_read_raw          @16
sf_readf_short       @17
sf_readf_int         @18
sf_readf_float       @19
sf_readf_double      @20
sf_read_short        @21
sf_read_int          @22
sf_read_float        @23
sf_read_double       @24
sf_write_raw         @32
sf_writef_short      @33
sf_writef_int        @34
sf_writef_float      @35
sf_writef_double     @36
sf_write_short       @37
sf_write_int         @38
sf_write_float       @39
sf_write_double      @40
sf_strerror          @50
sf_get_string        @60
sf_set_string        @61
sf_version_string    @68
sf_open_fd           @70
sf_wchar_open        @71
sf_open_virtual      @80
sf_write_sync        @90

_sf_command=sf_command
_sf_open=sf_open
_sf_close=sf_close
_sf_seek=sf_seek
_sf_error=sf_error
_sf_perror=sf_perror
_sf_error_str=sf_error_str
_sf_error_number=sf_error_n_umber
_sf_format_check=sf_format_check
_sf_read_raw=sf_read_raw
_sf_readf_short=sf_readf_short
_sf_readf_int=sf_readf_int
_sf_readf_float=sf_readf_float
_sf_readf_double=sf_readf_double
_sf_read_short=sf_read_short
_sf_read_int=sf_read_int
_sf_read_float=sf_read_float
_sf_read_double=sf_read_double
_sf_write_raw=sf_write_raw
_sf_writef_short=sf_writef_short
_sf_writef_int=sf_writef_int
_sf_writef_float=sf_writef_float
_sf_writef_double=sf_writef_double
_sf_write_short=sf_write_short
_sf_write_int=sf_write_int
_sf_write_float=sf_write_float
_sf_write_double=sf_write_double
_sf_strerror=sf_strerror
_sf_get_string=sf_get_string
_sf_set_string=sf_set_string
_sf_version_string=sf_version_string
_sf_open_fd=sf_open_fd
_sf_wchar_open=sf_wchar_open
_sf_open_virtual=sf_open_virtual
_sf_write_sync=sf_write_sync


To niestety niczego nie zmienia... :roll:
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez polymorphism » wtorek, 5 kwietnia 2011, 19:00

Co, ten sam błąd?

Można jeszcze spróbować wygenerować impdefem plik DEF i na bazie tego pliku wygenerować LIB-a.
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 XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez Cyfrowy Baron » wtorek, 5 kwietnia 2011, 19:10

polymorphism napisał(a):Co, ten sam błąd?


Ten sam... :(

polymorphism napisał(a):Można jeszcze spróbować wygenerować impdefem plik DEF i na bazie tego pliku wygenerować LIB-a.


Otrzymałem plik *.DEF o następującej treści:

KOD text:     UKRYJ  
LIBRARY     LIBSNDFILE.DLL

EXPORTS
    sf_close                       @3   ; sf_close
    sf_command                     @1   ; sf_command
    sf_error                       @7   ; sf_error
    sf_error_number                @10  ; sf_error_number
    sf_error_str                   @9   ; sf_error_str
    sf_format_check                @11  ; sf_format_check
    sf_get_string                  @60  ; sf_get_string
    sf_open                        @2   ; sf_open
    sf_open_fd                     @70  ; sf_open_fd
    sf_open_virtual                @80  ; sf_open_virtual
    sf_perror                      @8   ; sf_perror
    sf_read_double                 @24  ; sf_read_double
    sf_read_float                  @23  ; sf_read_float
    sf_read_int                    @22  ; sf_read_int
    sf_read_raw                    @16  ; sf_read_raw
    sf_read_short                  @21  ; sf_read_short
    sf_readf_double                @20  ; sf_readf_double
    sf_readf_float                 @19  ; sf_readf_float
    sf_readf_int                   @18  ; sf_readf_int
    sf_readf_short                 @17  ; sf_readf_short
    sf_seek                        @4   ; sf_seek
    sf_set_string                  @61  ; sf_set_string
    sf_strerror                    @50  ; sf_strerror
    sf_version_string              @68  ; sf_version_string
    sf_wchar_open                  @71  ; sf_wchar_open
    sf_write_double                @40  ; sf_write_double
    sf_write_float                 @39  ; sf_write_float
    sf_write_int                   @38  ; sf_write_int
    sf_write_raw                   @32  ; sf_write_raw
    sf_write_short                 @37  ; sf_write_short
    sf_write_sync                  @90  ; sf_write_sync
    sf_writef_double               @36  ; sf_writef_double
    sf_writef_float                @35  ; sf_writef_float
    sf_writef_int                  @34  ; sf_writef_int
    sf_writef_short                @33  ; sf_writef_short
 


Wygenerowałem plik *.LIB. Niestety wciąż ten sam błąd... :roll:

Pozmieniałem wpisy na:

KOD text:     UKRYJ  
    sf_close                       @3   ; _sf_close
    sf_command                     @1   ; _sf_command
    sf_error                       @7   ; _sf_error
    itd...


Wygenerowałem nowy *.LIB - błąd wciąż występuje....

Coś jest nie w porządku z tą biblioteką...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z linkerem [Linker Error] Unresolved external...

Nowy postprzez kriss » środa, 6 kwietnia 2011, 20:47

Prześledziłem wszystkie wasze posty, zrobiłem to samo u siebie i problem nadal występuję... Tej biblioteki chyba nie da się wykorzystać w C++ Builder :P Już się skończyły pomysły jak to rozwiązać ...
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 60 gości

cron