gpt4 book ai didi

.net - Delphi : How to call the .Net 4.0 版本的 StrongNameSignatureVerificationEx

转载 作者:行者123 更新时间:2023-12-02 09:40:19 26 4
gpt4 key购买 nike

我正在尝试从 Delphi(使用 Rad Studio Berlin)调用 IClrStrongName 上的 StrongNameSignatureVerificationEx

我的第一次尝试只是使用了定义

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);

//...

但是,我没有 IClrStrongName 的 Delphi 定义,因此一旦获得该对象,我就看不到如何调用它的任何方法。导入 mscoree.tlb 并没有给出一个结果,网络搜索只向我显示了来自

的 C++ 定义
  1. 上面的代码是否正确(尤其是 GetInterface() 的“obj”参数)?
  2. 我是否需要接口(interface)定义来调用该方法(是否可以通过名称调用)?
  3. 哪里可以获得 IClrStrongName 的 Delphi 定义?
  4. 如何将 C++ 定义转换为 Delphi?

最佳答案

最简单的方法是创建一个导出所需功能的 .net 类库。一些方法可以做到这一点:

  1. 使用混合模式 C++/CLI 类库。这允许您直接创建类非托管导出。这些反过来又可以调用托管代码。
  2. 创建一个 C# 类库并使用 Robert Giesecke 的 UnmanagedExports 库来公开您的功能。

在这两种情况下,您最终都会得到一个 .dll 文件,您可以使用 external 指令将其函数导入 Delphi。

网络上以及 Stack Overflow 上有很多关于如何执行这两件事的示例,因此我不会尝试创建更多相同的示例。

关于.net - Delphi : How to call the .Net 4.0 版本的 StrongNameSignatureVerificationEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44262253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com