Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 13:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Libary auf Compiler anpassen

Discussion on Libary auf Compiler anpassen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Libary auf Compiler anpassen

Hallo
Viele Libarys funktionieren ja nur für bestimmte Compiler....

Manche nur für Visual Studio manche nur für Cygwin manche nur für Mingw und manche funktionieren teilweise :/ Deshalb entstehen oft Probleme wenn ich mehrer Libaries benutzen will.
Gibt es eine Möglichkeit die Libaries neu zu bauen für den Compiler? Leute mit eigenem Compiler müssen dass doch auch hinkriegen, oder?

Vielleicht auch einfach nur Stichworte geben dass ich selber recherchieren kann, stehe bloß etwas auf dem Schlauch.
Krabat2 is offline  
Old 05/04/2016, 23:19   #2
 
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,465
Um welche Libraries geht es? Generell sind eigentlich alle Libraries compilerübergreifend kompatibel. Wäre ja auch bescheuert, wenn man für jeden Compiler anderen Code schrieben müsste, dafür gibts ja extra die C++ Standards.

Was du warscheinlich meinst, sind die Projekteinstellungen / Compile-schritte (Makefile vs. Visual Studio Projekt). Das zu portieren ist manchmal gar nicht so einfach.
florian0 is offline  
Old 05/05/2016, 00:04   #3
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by florian0 View Post
Um welche Libraries geht es? Generell sind eigentlich alle Libraries compilerübergreifend kompatibel. Wäre ja auch bescheuert, wenn man für jeden Compiler anderen Code schrieben müsste, dafür gibts ja extra die C++ Standards.

Was du warscheinlich meinst, sind die Projekteinstellungen / Compile-schritte (Makefile vs. Visual Studio Projekt). Das zu portieren ist manchmal gar nicht so einfach.
Tatsächlich ist das manchnaml gar nicht so einfach. Ich selbst bekomme zum Beispiel auch noch regelmäßig Probleme, wenn ich "*.lib" files in meinen GNU unter Windows linken will. Offiziell werden lib Dateien zwar unterstützt, aber ich hatte auch schon genug fälle in denen lediglich das neukompilieren vom Source aus geholfen hat.

Kann also schon durchaus manchmal Probleme machen, in 90% der Fälle sollte es aber echt einwandfrei laufen.
Shadow992 is offline  
Old 05/05/2016, 01:01   #4
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Dann denke ich mal dass ich die libaries neukompilieren muss, ich werde mal etwas googlen

Brauche ich dafür CMake? Das habe ich in manchen Installations Dokumentationen gelesen
Krabat2 is offline  
Old 05/06/2016, 13:32   #5
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
#push da mein Nachtrag an mein alten Beitrag angefügt wurde und manche vlt nur den alten gelesen haben.

Quote:
Brauche ich dafür CMake? Das habe ich in manchen Installations Dokumentationen gelesen
Krabat2 is offline  
Old 05/06/2016, 14:32   #6
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Wenn CMake als build system von der Library genutzt wird brauchst du das. Und wenn davon was in den Installations dokumenten steht wird die Library das wohl benutzen. Falls du irgendwo nicht weiter kommst kannst du ja entweder hier was genaueres fragen und den namen der Library nennen oder Leute fragen, die an der Library arbeiten.
th0rex is offline  
Old 05/06/2016, 15:09   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by florian0 View Post
Um welche Libraries geht es? Generell sind eigentlich alle Libraries compilerübergreifend kompatibel. Wäre ja auch bescheuert, wenn man für jeden Compiler anderen Code schrieben müsste, dafür gibts ja extra die C++ Standards.

Was du warscheinlich meinst, sind die Projekteinstellungen / Compile-schritte (Makefile vs. Visual Studio Projekt). Das zu portieren ist manchmal gar nicht so einfach.
Das ist absolut nicht der Fall, nein. Zum einen sind die generierten Binaries in der Regel nicht zwischen den diversen Compilern und Linkern kompatibel (teilweise nicht mal zwischen unterschiedlichen Versionen des gleichen Compilers). Darüber schreibt der Standard auch gar nichts vor. Und dann hat auch noch jeder Compiler zig Extensions, die bestimmte Code-Konstrukte erlauben, die nur mit diesem Compiler funktionieren. Auch die Verwendung solcher Extensions ist keine Seltenheit.

Davon abgesehen enthalten die Standardbibliotheken vergleichsweise sehr wenig Funktionalität und sobald du externe Abhängigkeiten hast (z.B. zur Win32 API), ist der Code nicht mehr plattformübergreifend. Dann musst du in der Tat für jede Plattform (und das ist in der Regel der Grund, wieso man verschiedene Compiler nutzt) anderen Code schreiben.

Die einzige Möglichkeit, C++ Bibliotheken zuverlässig und (möglichst) für alle Compiler bereitzustellen, ist in Quellcode-Form. Benutzer einer Bibliothek müssen den Code dann einmal selbst passend für ihren Compiler compilen. Andernfalls (z.B. bei closed-source Bibliotheken) ist man darauf angewiesen, dass für den jeweiligen Compiler (und dessen Version) auch ein passendes Binary zur Verfügung gestellt wird.
MrSm!th is offline  
Old 05/06/2016, 15:29   #8
 
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,465
Quote:
Originally Posted by MrSm!th View Post
Das ist absolut nicht der Fall, nein. Zum einen sind die generierten Binaries in der Regel nicht zwischen den diversen Compilern und Linkern kompatibel (teilweise nicht mal zwischen unterschiedlichen Versionen des gleichen Compilers). Darüber schreibt der Standard auch gar nichts vor. Und dann hat auch noch jeder Compiler zig Extensions, die bestimmte Code-Konstrukte erlauben, die nur mit diesem Compiler funktionieren. Auch die Verwendung solcher Extensions ist keine Seltenheit.
Korrekt! Ich ging von reinem Quellcode aus, nicht von vorkompilierten lib-files. Hätte ich vll. dazu-schreiben sollen^^
florian0 is offline  
Old 05/06/2016, 16:55   #9
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by florian0 View Post
Korrekt! Ich ging von reinem Quellcode aus, nicht von vorkompilierten lib-files. Hätte ich vll. dazu-schreiben sollen^^
Ja ich weiß, du hast dich bestimmt nur falsch ausgedrückt, aber um auf Nummer sicher zu gehen und eventuellen Googlern Klarheit zu verschaffen:

Nicht einmal der Quellcode wird in vielen Projekten (selbst großen Open-Source Projekten) Compilerübegreifend geschrieben, selbst wenn man es auf derselben Plattform kompiliert.

Das fängt bei Macros wie "#pragma-once" an, geht über "GNU 128-Bit"-Extension bis hin zu unterschiedlichen ABIs (das mag auf den ersten Blick keinen Sinn ergeben, wenn man sich aber darauf verlässt, dass man eine bestimmte ABI vorliegen hat und darauf basierend "MAGIC" macht, kanns schnell krachen wenn sich was ändert).

Die ersten zwei Punkte lassen sich natürlich bei strikter Einhaltung des Standards weitestgehend eliminieren, wobei dann wiederum neue Probleme auftreten ala "Not implemented yet" u.ä.
Punkt 3 ist eigentlich auch vermeidbar, jedoch nicht indem man sich an den Standard hält (denn dieser, so viel ich weiß, macht keinerlei Aussagen über die ABI), sondern indem man sich nicht auf "Design-Fragen" verlässt. Und mal ehrlich, wie oft gibt es wirklich keine andere Möglichkeit als im Call-Stack o.ä. rumzupfuschen? Vielleicht in einem von 1000 Fällen...

Alles in allem:
Wenn man sich an den Standard hält, hat man gute Chancen, dass der Source-Code überall kompiliert, ein Garant ist es jedoch mit Nichten.
Shadow992 is offline  
Old 05/07/2016, 15:03   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Punkt 3 ist eigentlich auch vermeidbar, jedoch nicht indem man sich an den Standard hält (denn dieser, so viel ich weiß, macht keinerlei Aussagen über die ABI)
Nun ja, das ist ja der Punkt. Man verlässt sich nicht auf undefiniertes Verhalten, also vermeidet man das Problem, indem man sich ausschließlich an den Standard hält Letztendlich ist man in C/C++ aber hochgradig eingeschränkt, wenn man sich nur exakt an das hält, was im Standard steht. Man kommt bei so einer low-level Sprache ganz einfach nicht drum herum, sich mit der Plattform zu beschäftigen, für die man programmieren möchte.

Quote:
Wenn man sich an den Standard hält, hat man gute Chancen, dass der Source-Code überall kompiliert, ein Garant ist es jedoch mit Nichten.
Auch wenn er es tut, weißt du nicht sicher, ob das Programm funktioniert, wie es soll. Es ist auf den gängigen Plattformen zwar der Fall, aber eben nicht von der Sprache garantiert. Wenn z.B. die Endianess anders ist als erwartet, wird diverse Logik im Code vielleicht schon komplett falsch.
MrSm!th is offline  
Thanks
1 User
Old 05/08/2016, 14:51   #11
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Zum Beispiel in der Dokumentation von libcurl steht "then run 'mingw32-make mingw32' in the root dir."
Heißt das ich muss immer diesen Befehl ausführen wenn ich eine libary compilen will?

Und macht es einen Unterschied ob ich mingw oder mingw-64 benutze?

Und letzte Frage, muss ich i686-w64-mingw32-g++.exe, oder g++.exe benuzten? (genauso mit den anderen z.B. ar.exe)
Krabat2 is offline  
Reply


Similar Threads Similar Threads
[C#] CsgoDouble Libary
04/26/2016 - .NET Languages - 3 Replies
C# Libary für csgodouble! Arbeitet direkt mit dem Websocket von CsgoDouble. Es wurde nicht alles getestet. Bei Fragen oder Fehlern bitte melden! https://github.com/Lucaber/CsgoDoubleClient
Help| C++ libary error
05/26/2011 - SRO Private Server - 0 Replies
guys i know its an poplar error and its seems its happan for me and my firend's the error title say 'sro_client C++ libary run-time error' now i dont know what to do other silkroad work for ex ' ISRO Newest EliteSro just isro 1.265 say libary c++ error P.S. thank for helpers ;)
Accsess DM Libary without a key.
07/27/2006 - WoW Exploits, Hacks, Tools & Macros - 1 Replies
Just take a look here: Video Note: That can be also done with unstuck.
Cords für DM Libary
08/16/2005 - World of Warcraft - 2 Replies
Hat jemand die Cords für die Libary in DM? Wäre nett, danke
Client Libary
07/12/2004 - General Gaming Discussion - 1 Replies
So also ich hab doch eine gefunden :) die recht vernünftig ausschaut :) http://client-library.ra-doersch.de/



All times are GMT +2. The time now is 13:39.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.