Cela a été demandé à plusieurs reprises, mais je ne sais pas ce que je fais mal. J'essaie d'obtenir la date actuelle soustraite de 7. Voici le texte principal:
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/date_formatting.hpp>
#include <boost/date_time/gregorian/greg_month.hpp>
using namespace std;
using namespace boost::gregorian;
int main(int argc, char **argv) {
time_t rawtime;
struct tm *timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
date cdate(timeinfo->tm_year+1900, timeinfo->tm_mon+1, timeinfo->tm_mday);
cdate += date_duration(-7);
string date = to_iso_string(cdate);
cout << date << endl;
return 0;
}
Lorsque j'essaie de le compiler, j'obtiens l'erreur suivante.
E:/include/boost/date_time/date_formatting.hpp:44: undefined reference to `boost::gregorian::greg_month::as_short_string() const'
E:/include/boost/date_time/date_formatting.hpp:49: undefined reference to `boost::gregorian::greg_month::as_long_string() const'
Quelqu'un peut-il aider? Je pensais avoir inclus les fichiers nécessaires.
Boost date_time n'est pas une bibliothèque d'en-tête uniquement. S'il vous plaît construire la bibliothèque, puis l'ajouter. Simple en gcc:
gcc myapp.cpp -omyapp -lboost_date_time
(Attention! Cette bibliothèque sournoisement semble fonctionne comme une bibliothèque d’en-tête uniquement aux niveaux d’optimisation -O2
et supérieurs, en raison de l’inligne; elle ne pourra pas être liée lorsque vous utilisez des niveaux d’optimisation inférieurs où le compilateur n’est pas en ligne. aussi agressif.)
Je pense que le compilateur se plaint de l'inclusion de boost lib.
Pour utiliser boost :: gregorian (boost :: date_time), vous devez utiliser bjam pour créer la bibliothèque boost, puis la lier à la lib. FileSystem.
La référence du boost voir cliquez ici .
EDIT: Selon ce que vous avez dit ci-dessus, le problème est que la bibliothèque est introuvable, mingw semble ne pas savoir où elle se trouve. Une réinstallation de mingw peut être nécessaire ou vous pouvez essayer de spécifier le chemin spécifique de la bibliothèque.
Bonne chance!
vous devriez ajouter le lien lib nommé
libboost_date_time-mgw46-d-1_54.dll.a
(mon chemin D:\My Documents\Downloads\boost_1_54_0\bin.v2\libs\date_time\build\gcc-mingw-4.6.2\debug\libboost_date_time-mgw46-d-1_54.dll.a
) au chemin du compilateur
Bonne chance