Ich benutze eine Toolkit dll um über eine Task-based-Library aus Pro/Web.Link eine Funktion aufzurufen. Die Funktion kriegt Übergabeparameter von Weblink übergeben und soll einen String als Rückgabewert zurückschicken. Leider funktioniert die Rückgabe der Werte nicht.
PRO_TK_DLL_EXPORT ProError mygetEnv( ProArgument* inputs, ProArgument** outputs )
{
ProError status;
ProArgument arg;
ProValueData envname;
char *env_string;
char *envname_s;
UserArgumentByLabelGet (inputs, L"ENV_NAME", &envname );
ProWstringToString( envname_s, envname.v.w );
env_string = (char *) strdup( getenv( envname_s ) ) ;
status = ProArrayAlloc (0, sizeof (ProArgument), 1, (ProArray*)outputs);
if (status == PRO_TK_NO_ERROR)
{
ProStringToWstring( arg.label, "RETURN_VALUE");
arg.value.type = PRO_VALUE_TYPE_WSTRING;
ProStringToWstring( arg.value.v.w, env_string );
status = ProArrayObjectAdd( (ProArray*)outputs, -1, 1, &arg );
}
else
return PRO_TK_GENERAL_ERROR;
return PRO_TK_NO_ERROR;
}
Ich denke, dass ich ein Problem mit den Zeilen:
ProStringToWstring( arg.value.v.w, env_string );
status = ProArrayObjectAdd( (ProArray*)outputs, -1, 1, &arg );
habe. Irgendwas mit falscher Formatierung oder Stringzuweisung oder falscher Arrayzuweisung? Allokiere ich zu wenig Speicher oder den falschen für meinen String beim ProArrayAlloc? Leider sind meine C-Kenntnisse sehr sehr beschränkt. Sieht von Euch jemand auf Anhieb was ich falsch mache?
Vielen Dank für Eure Hilfe.
Patrik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP