gpt4 book ai didi

nuget - native Nuget 中的 cdecl 和 stdcall 调用约定

转载 作者:行者123 更新时间:2023-12-03 02:54:05 25 4
gpt4 key购买 nike

我正在尝试构建一个 native nuget 包,它提供了调用约定的支点,为 x86 构建提供了具有 cdecl 和 stdcall 约定的 DLL。 (大多数用户更喜欢 cdecl 调用约定,但 P/Invoke 这个库的 .NET 用户出于各种原因更喜欢 stdcall。)

我的 .autopkg 包含 cdecl 和 stdcall 枢轴:

nuget
{
[nuspec omitted for brevity]

files {
[Win32,cdecl] {
lib: build\x86-cdecl\Debug\git2-0_21_0.lib;
bin: build\x86-cdecl\Debug\git2-0_21_0.dll;
symbols: build\x86-cdecl\Debug\git2-0_21_0.pdb;
}

[Win32,stdcall] {
lib: build\x86-stdcall\Debug\git2-0_21_0.lib;
bin: build\x86-stdcall\Debug\git2-0_21_0.dll;
symbols: build\x86-stdcall\Debug\git2-0_21_0.pdb;
}
};
}

使用 native nuget 脚本构建 .nupkg 似乎成功,并且在标准 C 项目(具有 cdecl 调用约定的项目)中安装和使用 nuget 包也成功。

但是,如果我创建一个新的 C 项目并将调用约定设置为 stdcall 并安装 nuget 包,则我不会获得库的 stdcall 版本。相反,安装了 cdecl 版本,但我无法链接。

我很乐观地认为 nuget 包管理器会检测我的项目的配置并使用适当的调用约定枢轴(就像它对处理器类型所做的那样),但这似乎并没有发生。我也没有提供手动选择调用约定的选项。然而,autopkg 配置中一个枢轴这一事实让我认为我可以选择一个。

我如何利用这个枢纽?

最佳答案

据我所知,这是完全不可能的。可悲的是,同样不可能获得帮助。

遗憾的是,Native Nuget 是一个几乎没有经过测试、几乎无法操作且完全不受支持的错失机会的荒地。唯一的答案就是根本不使用它。

关于nuget - native Nuget 中的 cdecl 和 stdcall 调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331880/

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