如何从Inno Setup脚本调用.NET DLL?
我想从Inno Setup脚本中调用.NET DLL(用C#编码)的函数。
我有:
[文件]
源:c: temp 1 MyDLL.dll; 标志:dontcopy
[码]
函数MyFunction():string;
外部'MyFunction @文件:MyDLL.dll stdcall setuponly';
但我仍然收到以下错误:
运行时错误(在-1:0):
无法导入dll:C: DOCUME〜1 foo LOCALS〜1 Temp is-LRL3E.tmp MyDLL.dll。
我究竟做错了什么?
哎呀,我的糟糕,自从我读了pascal以来已经太久了! 所以,如果你需要获得价值,那么有几种可能性:
当我上次使用InnoSetup时,它不直接支持你的场景(从设置调用.NET代码)。
Intenta de esta manera(试试这种方式):
Var
obj: Variant
va: MyVariableType;
Begin
//Starting
ExtractTemporaryFile('MyDll.dll');
RegisterServer(False, ExpandConstant('{tmp}MyDll.dll'), False);
obj := CreateOleObject('MyDll.MyClass');
//Using
va := obj.MyFunction();
//Finishing
UnregisterServer(False, ExpandConstant('{tmp}MyDll.dll'), False);
DeleteFile('{tmp}MyDll.dll');
End;
Suerte(祝你好运)
你试图从你的.NET DLL中导入一个C风格的函数 - 这实际上与COM互操作无关。 COM互操作允许您将.NET对象作为COM对象激活,但不会将它们公开为C / C ++导出的函数/类型。
如果你的函数不需要返回任何数据,为什么不做一个简单的.exe来调用你的函数,然后从你的设置中运行它呢?
另外:请参阅innosetup支持新闻组,以获得更好的支持。
链接地址: http://www.djcxy.com/p/44509.html上一篇: How can I call a .NET DLL from an Inno Setup script?
下一篇: Picking a dll in a particular path while loading a shared library in Windows