lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Ich habe ein Programm in C++ das ich als statische Library bereitstellen möchte.

#include <iostream>
using namespace std;

void sayHello()
{
    cout << "Hello world\n";
}

Wenn ich versuche diese Datei zu kompilieren bekomme ich diesen Fehler.

C:\jail-src-main>g++ mylib.cpp -o mylib.o
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

C:\jail-src-main>

Eine Bibliothek benötigt doch keine Main Methode oder?

von (0 Punkte)  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du erzeugst nicht nur das Objektfile sondern rufst den Linker auf der standardmäßig nach einer main Methode sucht, um ein ausführbares Programm zu erstellen. Verwende den POarameter -c um nur zu kompilieren.

g++ -c mylib.cpp -o mylib.o

Aus dem Objectfile erzeugst du dann eine statische .a Datei.

ar rcs libmylib.a mylib.o
von (888 Punkte)  
Stimmt, der steht sogar dabei aber ich habe das vergessen.