DLL funktioniert nicht in einer VBA-Umgebung, arbeitet aber in Excel VBA

9

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:

%Vor%

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 :

%Vor%

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"

    
Noldor130884 10.05.2017, 11:22
quelle

1 Antwort

2

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:

%Vor%

Nachdem ich alle BSTR s korrekt in wstring s konvertiert habe, konnte ich ohne Probleme mit wregex s arbeiten.

    
Noldor130884 17.05.2017, 08:32
quelle

Tags und Links