OptimLib installieren/bauen
OptimLib installieren/bauen
Hallo liebe Community,
ich bin noch nicht so lange bei der C++ Programmierung, daher die evtl. dumme Frage...
Ich bräcuhte die OptimLib Library.
https://github.com/kthohr/optim#install ... ly-library
Ich entwickel auf Windows und mit MSVC, daher dachte ich mir, dass ich die Only-Header Variante installieren will.
Dort steht, dass ich nur die configure Datei mit dem --header-only Parameter ausführen muss, um die Lib zu bauen.
Jedoch verstehe ich das nicht - die config Datei hat keine Endung.
WIe führe ich die Datei aus?
"./configure --header-only-version" geht nicht
Kann mir da jemand helfen ?
Gruß und bleibt gesund
ich bin noch nicht so lange bei der C++ Programmierung, daher die evtl. dumme Frage...
Ich bräcuhte die OptimLib Library.
https://github.com/kthohr/optim#install ... ly-library
Ich entwickel auf Windows und mit MSVC, daher dachte ich mir, dass ich die Only-Header Variante installieren will.
Dort steht, dass ich nur die configure Datei mit dem --header-only Parameter ausführen muss, um die Lib zu bauen.
Jedoch verstehe ich das nicht - die config Datei hat keine Endung.
WIe führe ich die Datei aus?
"./configure --header-only-version" geht nicht
Kann mir da jemand helfen ?
Gruß und bleibt gesund
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OptimLib installieren/bauen
Die Frage ist gar nicht so dumm, denn das Thema ist durchaus etwas komplexer. Allerdings ist es weniger ein C++-Thema.
ist ein üblicher Vorgang um unter Linux ein Programm zu bauen. configure ist dabei ein Bash-Skript, um das auszuführen musst Du also eine Bash zur Verfügung haben. Das habe ich unter Windows noch nicht gemacht, aber grundsätzlich müsste hier stehen, wie das geht:
Windows 10 Linux Bash aktivieren
Ob das "Linux-Subsystem" dann kompatibel genug ist, das bash-Skript durchzuführen, weiß ich nicht.
Code: Alles auswählen
configure && make && make install
Windows 10 Linux Bash aktivieren
Ob das "Linux-Subsystem" dann kompatibel genug ist, das bash-Skript durchzuführen, weiß ich nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OptimLib installieren/bauen
Vielen Dank für die schnelle Antwort !
Ich werde das morgen mal probieren.
Aber wenn ich das dann in Linux baue, ist das daann kompatibel ?
Und bei Header Only - kann ich nicht einfach die .h und .cpp aus dem Repository nehmen und in mein Programm Workspace legen ?
Oder kann das dann evtl wegen Abhängigkeiten nicht gehen ?
Ich werde das morgen mal probieren.
Aber wenn ich das dann in Linux baue, ist das daann kompatibel ?
Und bei Header Only - kann ich nicht einfach die .h und .cpp aus dem Repository nehmen und in mein Programm Workspace legen ?
Oder kann das dann evtl wegen Abhängigkeiten nicht gehen ?
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OptimLib installieren/bauen
Wenn Du eine Header-Only-Library baust, ist das nicht unwahrscheinlich.
Das kann ich Dir nicht beantworten, da ich die Abhängigkeiten nicht kenne. Aber anscheinend baut die Lib auf einer anderen Lib auf, womit das Risiko gegeben ist, dass Du eben die andere Lib auch noch ranschaffen musst.
Offenbar baut "configure" die Header-Only-Lib zusammen oder kopiert Dir den Kram passend. Was da im Detail passiert weiß ich nicht. Möglicherweise brauchst Du nur die Header zu übernehmen und fertig.
Die Installationsanweisung ist aber Linux-typisch, ergo auf Windows eher nicht zu gebrauchen. Möglicherweise findest Du irgendwo eine für Windows vorkompilierte Fassung?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OptimLib installieren/bauen
Ich hatte noch eine virtuelle Box mit Ubuntu drauf, da konnte ich die lib ohne Probleme direkt bauen.
Nun auf mein Windows System kopiert.
Ich versuche ein Beispielcode von der Seite mal zum laufen zu bekommen, leider gibts noch eine Fehlermeldung im Code, die ich noch nicht verstehe
Jedoch hoffe ich das hinzubekommen.
Ich halte euch auf dem laufenden
Nun auf mein Windows System kopiert.
Ich versuche ein Beispielcode von der Seite mal zum laufen zu bekommen, leider gibts noch eine Fehlermeldung im Code, die ich noch nicht verstehe
Jedoch hoffe ich das hinzubekommen.
Ich halte euch auf dem laufenden
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OptimLib installieren/bauen
Eine "DLL" von Linux (.so-File) wird unter Windows nicht laufen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OptimLib installieren/bauen
Nein, eine DLL ist ja nicht dabei - es handelt sich ja um eine Header Only
Re: OptimLib installieren/bauen
ich habe die Header Olny Lib in mein Workspace integriert und (ich benutzt Qt) in meiner pro Datei includiert.
Somit sollte mir die Lib zur Verfügung stehen.
Der folgende Code ist von der Seite der OptimLIb entnommen, nur dass die main (original) nun die optimTest ist.
Dann erhalte ich in folgender Zeile, folgende Fehlermeldung:
Nun habe ich ein neues Projekt aufgemacht und den Code 1 zu 1 übernommen aus dem Beispiel der Seite.
Jetzt ist der Fehler nicht mehr da ?!
Nun jedoch gibt es Fehler in den Headernder Lib.
Es treten folgende Fehler auf
Denn die OptimLib ist Abhängig von Armadillo, nun habe ich in die header der OptimLib jeweils ein include "armadillo" eingefügt.
Kann das die Fehlerquelle sein fpr den Fehler C2039 ?
Ich habe den Ansatz von folgender Seite probiert, aer ging nicht https://docs.microsoft.com/en-us/troubl ... e-function
ich arbeite mit MSVC2015x64
Somit sollte mir die Lib zur Verfügung stehen.
Der folgende Code ist von der Seite der OptimLIb entnommen, nur dass die main (original) nun die optimTest ist.
Code: Alles auswählen
void optimizationApp::optimTest()
{
// initial values:
arma::vec x = arma::ones(2,1) + 1.0; // (2,2)
//
std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now();
bool success = optim::de(x,ackley_fn,nullptr);
std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
if (success) {
std::cout << "de: Ackley test completed successfully.\n"
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
} else {
std::cout << "de: Ackley test completed unsuccessfully." << std::endl;
}
arma::cout << "\nde: solution to Ackley test:\n" << x << arma::endl;
}
Code: Alles auswählen
double optimizationApp::ackley_fn(const arma::vec& vals_inp, arma::vec* grad_out, void* opt_data)
{
const double x = vals_inp(0);
const double y = vals_inp(1);
const double pi = arma::datum::pi;
double obj_val = -20*std::exp( -0.2*std::sqrt(0.5*(x*x + y*y)) ) - std::exp( 0.5*(std::cos(2*pi*x) + std::cos(2*pi*y)) ) + 22.718282L;
//
return obj_val;
}
Code: Alles auswählen
bool success = optim::de(x,ackley_fn,nullptr);
Den Fehler kann ich nicht nachvollziehen.error: reference to non-static member function must be called optimizationApp::ackley_fn': non-standard syntax; use '&' to create a pointer to member
Nun habe ich ein neues Projekt aufgemacht und den Code 1 zu 1 übernommen aus dem Beispiel der Seite.
Jetzt ist der Fehler nicht mehr da ?!
Nun jedoch gibt es Fehler in den Headernder Lib.
Es treten folgende Fehler auf
In meinem Workspace liegt neben der OptimLib, die Armadillo Lib (ebenfalls Only Header ) (wer sie nicht kennt: ist eine echt coole performante Mathe Lib, benutz sie seit kurzem und bin begeistert )error: C2039: 'function': is not a member of 'std'
Denn die OptimLib ist Abhängig von Armadillo, nun habe ich in die header der OptimLib jeweils ein include "armadillo" eingefügt.
Kann das die Fehlerquelle sein fpr den Fehler C2039 ?
Ich habe den Ansatz von folgender Seite probiert, aer ging nicht https://docs.microsoft.com/en-us/troubl ... e-function
ich arbeite mit MSVC2015x64
Re: OptimLib installieren/bauen
Ich nehmen an du willst die Methode "ackley_fn" übergeben, dafür solltest du den Adressoperator & verwenden:poggo hat geschrieben: ↑Do Aug 27, 2020 2:50 pmDann erhalte ich in folgender Zeile, folgende Fehlermeldung:
Code: Alles auswählen
bool success = optim::de(x,ackley_fn,nullptr);
error: reference to non-static member function must be called optimizationApp::ackley_fn': non-standard syntax; use '&' to create a pointer to member
Code: Alles auswählen
bool success = optim::de(x,&ackley_fn,nullptr);
Wird dort "functional" eingebunden?poggo hat geschrieben: ↑Do Aug 27, 2020 2:50 pmNun habe ich ein neues Projekt aufgemacht und den Code 1 zu 1 übernommen aus dem Beispiel der Seite.
Jetzt ist der Fehler nicht mehr da ?!
Nun jedoch gibt es Fehler in den Headernder Lib.
Es treten folgende Fehler auferror: C2039: 'function': is not a member of 'std'
Code: Alles auswählen
#include <functional>
Re: OptimLib installieren/bauen
ich habe testweise "functional" eingebunden.
Dann verschwindet in dem Header der Fehler, jedoch gibts dann diverse verschiedene Fehler in "xfunctional"
zb
Dann verschwindet in dem Header der Fehler, jedoch gibts dann diverse verschiedene Fehler in "xfunctional"
zb
und noch mehr so Random Fehler,C2988: unrecognizable template declaration/definition
C2143: syntax error: missing ';' before '<'
C2433: '_Lex_compare_check_element_types': 'inline' not permitted on data declarations
...