Strona 1 z 2

Dołączanie bibliotek *.LIB

Nowy postNapisane: piątek, 20 sierpnia 2010, 17:30
przez politech
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).

Re: Dolaczanie libow

Nowy postNapisane: piątek, 20 sierpnia 2010, 20:23
przez polymorphism
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.

Re: Dolaczanie libow

Nowy postNapisane: piątek, 20 sierpnia 2010, 20:30
przez politech
Hmmm ale odpalam program na Win7 64bit i pisze ze nie ma biblioteki wininet i nie wiem dlaczego

Re: Dolaczanie libow

Nowy postNapisane: piątek, 20 sierpnia 2010, 20:45
przez polymorphism
Hmm, być może ma to związek z tymi 64-oma bitami, trudno powiedzieć...

Re: Dolaczanie libow

Nowy postNapisane: piątek, 20 sierpnia 2010, 21:11
przez politech
Czyli co funckje wininet do obslugi HTTPSesion sa nie obslugiwane przez windows 7 64bit?

Re: Dolaczanie libow

Nowy postNapisane: piątek, 20 sierpnia 2010, 21:46
przez polymorphism
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)

Re: Dolaczanie libow

Nowy postNapisane: sobota, 21 sierpnia 2010, 08:59
przez Cyfrowy Baron
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.

Re: Dolaczanie libow

Nowy postNapisane: niedziela, 22 sierpnia 2010, 19:05
przez politech
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ść?)

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: niedziela, 22 sierpnia 2010, 19:58
przez Cyfrowy Baron
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.

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: poniedziałek, 23 sierpnia 2010, 11:43
przez polymorphism
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.

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: poniedziałek, 23 sierpnia 2010, 13:01
przez Cyfrowy Baron
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.

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: poniedziałek, 23 sierpnia 2010, 13:33
przez polymorphism
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 :( ).

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: poniedziałek, 23 sierpnia 2010, 21:27
przez wargo
A może kompilacja wraz z bibliotekami by pomogła?

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: wtorek, 24 sierpnia 2010, 08:46
przez Cyfrowy Baron
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. :)

Re: Dołączanie bibliotek *.LIB

Nowy postNapisane: wtorek, 24 sierpnia 2010, 16:42
przez politech
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)