gpt4 book ai didi

.net - 尝试从 native 应用程序并排访问 .NET 程序集时出现 OLE 错误 80131522

转载 作者:行者123 更新时间:2023-12-01 13:04:09 27 4
gpt4 key购买 nike

我有一个应用程序(Delphi Native 代码)需要访问 .NET 程序集(公开一些 COM 类。我想使用并排程序集和 list 来完成此操作。我已经使用测试 .NET 程序集完成了此操作,但我需要访问的程序集有问题。

注册程序集后,我可以实例化 COM 类。一旦我取消注册程序集,并尝试并排访问,我就会收到上述错误。我的 native 应用程序有一个应用程序 list ,它对程序集具有简单的依赖性。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="TestApplication.exe"
version="1.0.0.0"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
name="TestAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="xxxxxxxxxxxxxxxx"
type="win32"/>
</dependentAssembly>
</dependency>
</assembly>

我已将其作为资源嵌入到我的 .net 程序集中的程序集 list 如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="TestAssembly"
version="1.0.0.0"
processorArchitecture="x86"
publicKeyToken="xxxxxxxxxxxxxxxx"
type="win32"/>
<clrClass
clsid="{F3F1623D-DB4A-4152-9A5D-5A465AD3A318}"
progid="TestAssembly.MyObject"
threadingModel="Both"
name="TestAssembly.MyObject"
runtimeVersion="v2.0.50727">
</clrClass>
<file name="TestAssembly.dll">
</file>
</assembly>

list 似乎设置正确。如果我更改应用程序 list 的依赖项名称、版本或公钥 token (顺便说一句,示例中的不是我代码中的那个),我会收到有关应用程序配置不正确的常见 SxS 错误。

我在另一个(诚然更简单的).NET 程序集上工作,但无法弄清楚哪里出了问题。问题是我不确定错误的含义。

最佳答案

要生成 .Net 程序集 list ,请像这样使用 mt.exe

c:>mt.exe -nologo -managedassemblyname:"your_binary.dll" -nodependency -out:"temp_file.manifest"
c:>mt.exe -nologo -manifest "temp_file.manifest" -outputresource:"your_binary.dll";2

然后打开 temp_file.manifest 并逐字复制 assemblyIdentity 标签到您的 delphi 可执行 list 的 dependency\dependentAssembly 标签下。

仅供引用:您必须将可执行文件和所有相关的 .net dll 保存在同一个文件夹中。

关于.net - 尝试从 native 应用程序并排访问 .NET 程序集时出现 OLE 错误 80131522,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088618/

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