verwenden, Bibliotheken von Drittanbietern unter Windows habe ich die folgenden zwei Dinge gelernt:
Ihre Bibliothek als DLL zu verteilen, anstatt eine statische Bibliothek. Dies ergibt eine bessere Kompatibilität zwischen verschiedenen c-Compilern und Linkern. Ein weiteres Problem mit statischen Bibliotheken in Visual C++ ist, dass die Auswahl der Laufzeitbibliothek Bibliotheken mit Code unter Verwendung einer anderen Laufzeitbibliothek inkompatibel machen kann und Sie möglicherweise eine Version der Bibliothek für jede Laufzeitbibliothek verteilen müssen.
Vermeiden Sie C++ wenn möglich. Die C++ - Namensänderung variiert stark zwischen verschiedenen Compilern und es ist unwahrscheinlich, dass eine Bibliothek, die für visuelles C++ gebaut wurde, von einer anderen Build-Umgebung in Windows aus verlinkt werden kann. Wenn es um C geht, sind die Dinge viel besser, insbesondere wenn Sie DLLs verwenden.
Wenn Sie wirklich die guten Teile von C++ (wie Ressourcenverwaltung durch Konstruktoren und Destruktoren) erhalten möchten, erstellen Sie eine Convenience-Schicht in C++, die Sie als Quellcode verteilen, der Ihre c-Funktionen versteckt.Da der Benutzer die Quelle hat und sie lokal kompiliert, hat er keine Probleme mit der Namensänderung oder dem Fehler in der lokalen Umgebung.
Ohne zu viel über den Aufruf von c/C++ - Code von Java zu wissen, erwarte ich, dass es viel einfacher ist, mit c-Code zu arbeiten als mit C++ - Code wegen der Probleme mit dem Namen-Mangling.
Das Buch "Imperfect C++" hat eine Diskussion über Bibliothekskompatibilität, die ich sehr hilfreich fand.