我正在尝试从 Delphi 致电StrongNameSignatureVerificationEx
(IClrStrongName
使用 Rad Studio Berlin)
我的第一次尝试只是使用了定义
function StrongNameSignatureVerificationEx(
wszFilePath : LPCWSTR;
fForceVerification : boolean;
var pfWasVerifided : boolean
): BOOL; stdcall; external 'mscoree.dll';
但这调用了 .Net 2.0 版本(目标机器不需要它 - 给出了一个很好的“请安装 .net framework 2.0/3.5 消息”)
有一种机制可以创建 CLR 主机并使用从特定运行时调用例程版本TJclClrHost
var
anHost : TJclClrHost;
aClsId : TGUID;
res : Boolean;
obj : OleVariant; // ? Not sure about this, copying from another example
begin
anHost := TJclClrHost.Create('v4.0.30319');
anHost. Start
aClsId := StringToGuid('{9280188d-0e8e-4867-b30c-7fa83884e8de}');
res := anHost.GetInterface(aClsId, obj);
//...
但是,我没有 Delphi 定义,IClrStrongName
所以一旦我得到对象,我就看不到如何调用它的任何方法。导入 mscoree.tlb 并没有给出一个,并且网络搜索只向我显示了来自的 C++ 定义
- 上面的代码是否正确(尤其是 GetInterface() 的 'obj' 参数)?
- 我是否需要一个接口定义来调用该方法(有没有办法通过名称调用)?
- 我在哪里可以获得 IClrStrongName 的 Delphi 定义?
- 如何将 C++ 定义转换为 Delphi?