Wenn Sie für eine andere Möglichkeit zur Kombination von 2008 und 2010 Bibliotheken in einer ausführbaren Datei als Verschieben 2010 Teil außerhalb in eine DLL, als die Antwort ist wahrscheinlich "Es gibt keinen anderen einfachen Weg, dies zu erreichen".
Aber wenn Sie nicht wollen "VC++ 2010 Laufzeitbibliotheken ... unter VS 2008" (das baut gegen 2010 Bibliotheken in der alten 2008 IDE), aber "verwenden Sie eine 2010-kompilierte DLL in Ihrem 2008 "kompiliertes Programm" ist es durchaus möglich.
Der einfachste Weg, wie wir es in unseren Projekten tun, ist (statisch verknüpfte Standardbibliotheken (MFC, wenn Sie es verwenden) (.exe und DLL) zu erstellen und dann LoadLibrary
in Ihrer .exe zu laden DLL. In der DLL können Sie (_declspec (dllexport)
) eine Funktion (vorzugsweise innerhalb extern "C" {}
Wächter) exportieren und in der .exe durch GetProcAddress
verwenden.
Statische Verknüpfungen und explizites Laden ersparen Ihnen viele Inkonsistenzfehler, die durch unterschiedliche Laufzeiten verursacht werden.
Wenn Sie sich Sorgen machen über das Laden von DLLs und das Aufrufen von Kosten, können Sie versuchen, diese Aufrufe so selten wie möglich zu machen (indem Sie nicht nur den Algorithmus, sondern auch einige höhere Logik in die DLL verschieben). Siehe auch this issie.
Und Sie können Ihren gesamten Code in einer IDE (2010) unter Verwendung native multitargeting bauen (jedoch müssen Sie immer noch Ihre Haupt-App und DLL getrennt gegen v9 und v10 Bibliotheken jeweils erstellen).
Die C++ Compiler von Visual Studio verwendet, nicht C++ 0x unterstützt, wenn das ist, was Sie fordern. Natürlich könnten Sie immer einen neueren Compiler verwenden, wenn Sie ein Upgrade auf Visual Studio 2010 und/oder Visual Studio 2012 vermeiden möchten. Eine mögliche Lösung besteht darin, den Optimierungsalgorithmus selbst mit einem anderen Compiler zu kompilieren und nur auf die von diesem Compiler erzeugte Ausgabe zu verweisen . –
Übergeben Ihre Bibliotheken Objekte untereinander und erwarten voneinander, dass sie ihre Zuordnung aufheben?Das Mischen von Bibliotheken mag funktionieren, aber es gibt einige ziemlich einschränkende Vorbehalte (und die Verwendung der C++ - Container kann zu schlechter Magie führen): http://stackoverflow.com/questions/6531401/how-to-use-vs2010-built-dlls-in -vs2008 - Kurz gesagt, es ist einfacher, wenn Sie alles konsistent halten und nur eine C++ - Laufzeit verwenden können. – birryree
Dies kann nur zu einem guten Ende kommen, wenn Sie die Dateien #include von VS2010 verwenden. Was nicht funktioniert, VS2008 kann sie nicht kompilieren, besonders, da Sie nach der Verbesserung der Bewegungssemantik perfektioniert sind. –