Hello Stackoverflow Community,
У меня проблемы с вызовом C ++ DLL в пользовательском действии Installscript.Проблема возникает, когда я пытаюсь вызвать мою DLL с параметрами.Изображение ошибки выглядит следующим образом:
DLL вызывается с параметрами
значения, параметры, успешно обрабатываются в DLL (значения также успешно передаются)
после успешного завершения метода DLL возвращаемое значение не передается, но установка завершается с ошибкой 1603.
Однако, если я вызываю тот же метод без параметров, все работает без проблем.
Не имеет значения, какие параметры или сколько параметров передаются.Как только передается только один параметр, установка завершается неудачно.
Installscript:
prototype NUMBER DoSomeThing(HWND, STRING, INT);
prototype NUMBER MsiCppTest.DoSomethingInCpp(STRING, INT);
prototype NUMBER MsiCppTest.DoSomethingOtherInCpp();
function NUMBER DoSomething(hMSi, sText, nCount)
STRING sSupportDir;
NUMBER nSize, nResult, nValue;
begin
nSize = 256;
nValue = -1;
MsiGetProperty(hMSi, "SUPPORTDIR", sSupportDir, nSize);
nResult = UseDLL(sSupportDir ^ "MsiCppTest.dll");
if (nResult = 0) then
//does not work:
nValue = MsiCppTest.DoSomethingInCpp(sText, nCount);
//would work:
nValue = MsiCppTest.DoSomethingOtherInCpp();
UnUseDLL(sSupportDir ^ "MsiCppTest.dll");
endif;
return nValue;
end;
C ++ DLL:
int DoSomethingInCpp(LPCTSTR lpText, int nCount) {
//The ToDo function is executed successfully with the correct values
ToDo(lpText, nCount);
//As soon as the function is completed, the setup is aborted
return 123;
}
int DoSomethingOtherInCpp() {
//would work
ToDo();
return 321;
}
У кого-нибудь есть идея, чтобы это исправитьпроблема?