Dołączanie bibliotek *.LIB

problemy z funkcjonowaniem bibliotek, komponentów itp.

Dołączanie bibliotek *.LIB

Nowy postprzez politech » piątek, 20 sierpnia 2010, 17:30

Witam chciałbym zapewnić przenoszalność mojego program używającego biblioteki wininet, w związku z tym przekopiowałem wininet.lib do folderu z programem a w projekcie chciałem dodać właśnie tego liba ale wyskoczył mi komunikat ze projekt zawiera już ta biblioteka (kiedy chciałem uruchomić program na innym sprzęcie to wyskakiwało info o braku wininet).
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Dolaczanie libow

Nowy postprzez polymorphism » piątek, 20 sierpnia 2010, 20:23

Wininet.lib jest to biblioteka importów systemowej DLL-ki, nie ma ona związku z "przenoszalnością" programu, ponieważ i tak musi być dołączona, jeśli chcesz korzystać z jakiejkolwiek funkcji wininet. Według dokumentacji wszystkie wersje windowsa (począwszy od Win95) zawierają tę bibliotekę, choć niektóre jej elementy mogą wymagać nowszych wersji systemu - na dole opisu każdej funkcji masz wymienione minimalne wymagania systemowe.
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: Dolaczanie libow

Nowy postprzez politech » piątek, 20 sierpnia 2010, 20:30

Hmmm ale odpalam program na Win7 64bit i pisze ze nie ma biblioteki wininet i nie wiem dlaczego
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Dolaczanie libow

Nowy postprzez polymorphism » piątek, 20 sierpnia 2010, 20:45

Hmm, być może ma to związek z tymi 64-oma bitami, trudno powiedzieć...
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: Dolaczanie libow

Nowy postprzez politech » piątek, 20 sierpnia 2010, 21:11

Czyli co funckje wininet do obslugi HTTPSesion sa nie obslugiwane przez windows 7 64bit?
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Dolaczanie libow

Nowy postprzez polymorphism » piątek, 20 sierpnia 2010, 21:46

Chodzi mi o to, że próbujesz odpalić 32-bitowy program na systemie 64-bitowym. Być może to jest problem, bo sama biblioteka zapewne w systemie jest, tyle że w wersji x64 (a tych aplikacje 32-bitowe ładować nie mogą). Spróbuj, jeśli masz możliwość, skompilować program w trybie 64-bitowym.

Sprawdzałeś, czy w ogóle jest plik wininet.dll w tym systemie? (chyba katalog syswow64)
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: Dolaczanie libow

Nowy postprzez Cyfrowy Baron » sobota, 21 sierpnia 2010, 08:59

Systemy 64 bitowe korzystające z technologii WOW64 zezwalają na uruchamianie aplikacji 32-bitowych.
WOW64 przełącza procesor między trybami 32-bitowym a 64-bitowym, dzięki temu procesory 64-bitowe wykonują aplikacje 32-bitowe równie szybko jak procesor 32-bitowy.

Aplikacje 32-bitowe nie mogą korzystać jednak z bibliotek 64-bitowych, czyli nie będą współpracowały np. z 64-bitowymi plikami DLL.

W środowisku 64-bitowym nie możliwe jest uruchomienie 16-bitowych aplikacji.

Program 32-bitowy stworzony np. dla środowiska 32-bit będzie działał prawidłowo w środowisku 64-bitowym o ile biblioteki do których będzie się odwoływał, będą występowały w tym środowisku w wersji 32-bitowej, w przeciwnym razie program nie będzie działał.

Użycie wininet.lib oznacza, że Twój program korzysta z biblioteki wininet.dll, a skoro tworzysz go w środowisku 32-bitowym to podłącza się do 32-bitowej wersji tej biblioteki. Po przeniesieniu do systemu 64-bitowego program również próbuje skorzystać z tej biblioteki, ale występuje ona w wersji 64-bitowej, więc nie może się do niej podłączyć. Problem bierze się z tego, że w środowisku 64-bitowym biblioteka wininet.dll występuje tyko w wersji 64-bitowej.
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: Dolaczanie libow

Nowy postprzez politech » niedziela, 22 sierpnia 2010, 19:05

A nie da się do programu dołączyć 32bitowego wininet, żeby korzystał niego a nie z tego 64bitowego systemowego? Czy trzeba kompilować program na 64bit(Builder Enterprise 6 ma w ogole taka mozliwość?)
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Re: Dołączanie bibliotek *.LIB

Nowy postprzez Cyfrowy Baron » niedziela, 22 sierpnia 2010, 19:58

Możesz spróbować skopiować do katalogu programu bibliotekę wininet.dll z Twojego 32-bitowego systemu i sprawdzić czy to będzie działać w systemie 64-bitowym.
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: Dołączanie bibliotek *.LIB

Nowy postprzez polymorphism » poniedziałek, 23 sierpnia 2010, 11:43

Systemowe rzeczy powinien skopiować do specjalnego katalogu syswow64, gdzie przechowywane są 32-bitowe wersje bibliotek. Następna rzecz to kwestia licencji. Nie wiem, jaka to aplikacja i jaka jest forma jej dystrybucji (choć to jest w sumie bez znaczenia), ale nie może razem z nią rozprowadzać elementów systemu (jakimi niewątpliwie są biblioteki), chyba że jest to część jakiegoś oficjalnego redista.
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: Dołączanie bibliotek *.LIB

Nowy postprzez Cyfrowy Baron » poniedziałek, 23 sierpnia 2010, 13:01

Systemowe rzeczy powinien skopiować do specjalnego katalogu syswow64, gdzie przechowywane są 32-bitowe wersje bibliotek.


Program najpierw będzie szukał tej biblioteki w katalogu programu, a dopiero potem w katalogach systemowych.

Następna rzecz to kwestia licencji.


Na razie to kwestia sprawdzenia, czy to wogóle zadziała. Co do legalności to biblioteka jest własnością Microsoft'u więc raczej nie można jej rozprowadzać razem z programem.

Biblioteka wininet.lib to element przeglądarki IE, a z tego co gdzieś, kiedyś wyczytałem w sieci, to 64-bitowy Windows 7 zawiera IE z bibliotekami 32 i 64-bitowymi, więc nie powinno być z tym problemu, ale skoro problem występuje, to na pewno co do tego się mylę. Powszechnie używana jest wersja Windows 7 Home Premium, która może być pozbawiona bibliotek w wersji 32-bitowej.

Być może legalnym rozwiązaniem byłoby zainstalowanie na tym komputerze przeglądarki Internet Explorer 8 w wersji 32-bitowej, o ile jest to wogóle możliwe (nie wiem) i nie będzie się gryzło z IE 64-bit.
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: Dołączanie bibliotek *.LIB

Nowy postprzez polymorphism » poniedziałek, 23 sierpnia 2010, 13:33

Program najpierw będzie szukał tej biblioteki w katalogu programu, a dopiero potem w katalogach systemowych.

Napisałem to z dwóch powodów: masz do czynienia z emulacją, więc nie wszystko musi być typowe, szczególnie gdy chodzi o systemowe komponenty (osobiście wątpię w to, ale mimo wszystko pewniej będzie, jeśli zrobi to po bożemu). Drugi powód to to, że jeśli by kopiował bibliotekę pod wskazane miejsce, to wyszłoby, czy już ma ten plik w systemie, a powodem problemów jest coś innego (wcześniej pytałem się, czy wininet.dll jest na tym systemie. Nie dostałem odpowiedzi :( ).
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: Dołączanie bibliotek *.LIB

Nowy postprzez wargo » poniedziałek, 23 sierpnia 2010, 21:27

A może kompilacja wraz z bibliotekami by pomogła?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    WindowsFirefox

Re: Dołączanie bibliotek *.LIB

Nowy postprzez Cyfrowy Baron » wtorek, 24 sierpnia 2010, 08:46

Program jest kompilowany z bibliotekami, ale to nie oznacza, że biblioteki DLL zostaną włączone w zasoby programu. Kompilacja z bibliotekami dotyczy innego rodzaju bibliotek np. *.BPL. :)
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: Dołączanie bibliotek *.LIB

Nowy postprzez politech » wtorek, 24 sierpnia 2010, 16:42

Jak tylko wróci do mnie laptop z win7 to sprawdzę czy kopiowanie wininet.dll z 32bitowego systemu coś pomoże.
A jeszcze chciałem powtórzyć pytanie Builder 6 Enterprise ma możliwość kompilowania na 64bit?(I gdzie to się ustawia)
Avatar użytkownika
politech
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): poniedziałek, 26 lipca 2010, 13:21
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2006
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

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

cron