Wie wird VS2013 dazu gebracht, Aufrufe von __dtol3, __dtoui3 und anderen Funktionen zum Umwandeln zwischen Integer-Typen zu stoppen?

8

Ich aktualisiere derzeit ein Visual Studio 2010-Projekt, das auf das INtime-RTOS abzielt. Code, der Casting-Vorgänge ausführt, kann nicht verknüpft werden. Bei der Untersuchung der Ausgabedateien für die Inline-Assemblierung stellt VS2013 bei einigen Integer-Casting-Operationen Assemblierungsbefehle für Aufrufe von __dtol3, __dtoui3, __dtoul3, __ltod3 und __ultod3 bereit. Das Problem ist, dass die INtime-Bibliotheken keine Definitionen für diese Funktionen enthalten. Ich habe überprüft, dass VS2013 das gleiche für Win32-Ziele für Debug- und Release-Builds tut.

Gibt es eine Möglichkeit, VS2013 zu veranlassen, generierende Aufrufe dieser Funktionen zu generieren?

    
CppWoman 24.10.2013, 02:56
quelle

2 Antworten

11

Sie müssten SSE2-Codegen deaktivieren, indem Sie das / arch verwenden option (verwenden Sie entweder / arch: IA32 oder / arch: SSE).

Alternativ ... (was folgt ist nicht offiziell unterstützt ; Ihre Laufleistung kann variieren; tun Sie dies auf eigenes Risiko)

Extrahieren Sie aus msvcrt.lib das Objekt, das diese Funktionen definiert, und verknüpfen Sie dieses Objekt direkt mit Ihrem Programm. Diese Funktionen sind im Objekt ftol3.obj definiert; Sie können es extrahieren, indem Sie das lib Tool verwenden:

%Vor%

Abhängig von (a) welchen Funktionen Sie verwenden und (b) was genau die INtime-Bibliotheken definieren, benötigen Sie möglicherweise zusätzliche Objekte. Auch dies ist keine unterstützte Möglichkeit, die Visual C ++ - Laufzeitbibliotheken zu verwenden, und es funktioniert möglicherweise nicht für Ihren speziellen Anwendungsfall.

    
James McNellis 24.10.2013, 03:53
quelle
4

möglicherweise ein anderer Weg:

Kompiliermöglichkeit hinzufügen /d2noftol3

Diese Option ist undokumentiert

    
sizedDealloc- 29.07.2015 04:22
quelle