Mam zamiar korzystać z bibliotek w moim programie C++. Rozwój odbywa się na Linuksie, ale aplikacja jest przeznaczona do kompilacji zarówno na Linuksie, jak i na Windowsie. Rozumiem bezpośredni odpowiednik dla bibliotek współdzielonych (.so) w systemie Windows jest DLL, prawda?Tworzenie bibliotek programów w systemie Windows i LINUX [C++]
W systemie Linux za pomocą g ++ mogę utworzyć bibliotekę wspólną przy użyciu flag -fPIC
i -shared
. AFAIK, nie ma potrzeby wprowadzania innych zmian kodu w przypadku biblioteki współużytkowanej. Ale rzeczy są inne w Windows DLL. Tam powinienem określić funkcje, które muszą być eksportowane za pomocą dllexport, prawda?
Moje pytanie brzmi: jak zarządzać tą sytuacją? Mam na myśli dllexport jest nieprawidłowy w Linuksie i kompilator da błąd. Ale jest wymagany w systemie Windows. Jak więc napisać funkcję, która będzie kompilować się na obu platformach bez jakiejkolwiek zmiany kodu?
Kompilatory używane
- g ++ - Linux
- VC++ - Windows
Każda pomoc będzie wielki!
Dzięki. Jaki będzie typ biblioteki DLL utworzonej w oknach? Czy to będzie dll COM? Czy są szanse na uruchomienie problemów związanych z piekłem DLL? –
Użycie polecenia dllexport nie powoduje ekspozycji biblioteki dll na system COM. Szanse dll piekła zależą od tego, jak rozpowszechniać dll i aplikacji. Jeśli zawsze instalujesz biblioteki DLL, których wymaga twoja aplikacja, problem związany z tą biblioteką nie stanowi problemu. –
@sean e: Dzięki. Zawsze będę instalował wymagane aplikacje DLL w katalogu aplikacji. Czasami mogą występować niewielkie aktualizacje, które zastąpią tylko jedną bibliotekę DLL, a nie całą aplikację. Czy to będzie problem? –