Ich habe die folgende Funktion in einer DLL enthalten, die ich schrieb (c ++), die ich in Excel debuggte, und funktionierte gut:
%Vor% Wenn FileName
beispielsweise foo_T024.lol
ist, gibt diese Funktion korrekt float
(in C ++ oder Single
in VBA) mit dem Wert 2,4 zurück.
Ich rufe die Funktion von VBA (sowohl von Excel als auch von der anderen Umgebung) wie folgt auf:
%Vor% Wenn ich dasselbe von der anderen Umgebung mache und die Funktion für die gleiche Zeichenfolge verwende, bekomme ich **ERROR**
und leider nichts anderes, weil ich nicht debuggen kann (dies ist eine proprietäre Anwendung).
Was könnte das Problem sein?
EDIT: Ich habe herausgefunden, dass diese andere Umgebung tatsächlich SAX ist, was im Grunde mit VBA identisch ist.
> BEARBEITEN: Ich konnte Visual Studio mit der Anwendung verknüpfen, damit ich prüfen konnte, was importiert wurde und was falsch ist. FileName
sieht korrekt importiert aus (Ich habe auch einen VARIANT
-input-Ansatz verwendet, um zu sehen, ob das das Problem war, was nicht der Fall war), aber ich erhalte einen Fehler in dieser Zeile:
Der Fehler ist:
Nicht behandelte Ausnahme bei 0x75F0C54F in NSI2000.exe: Microsoft C ++ - Ausnahme: std :: regex_error an Speicherort 0x0018E294.
Und es stoppt an dieser Stelle um xthrow.cpp
:
EDIT: Meine VS-Version ist 2013, das Platformtoolset ist das "Visual Studio 2013 - Windows XP (v120_xp)". Meine Compiler-Version ist: "Version 18.00.21005.1 für x64"
Stellt sich heraus, dass etwas mit der Zeichenfolge, die ich importiert habe, nicht stimmt. Ich verstehe nicht was, denn als ich das Programm getestet habe, sahen sie gut aus. Ich löste das, indem ich ein SAFEARRAY
der Zeichenfolgen importierte (was mich dazu zwang, die gesamte Funktion und den VBA-Code zu ändern), auf deren BSTR
-Wert wie folgt zugegriffen werden konnte:
Nachdem ich alle BSTR
s korrekt in wstring
s konvertiert habe, konnte ich ohne Probleme mit wregex
s arbeiten.