本机Nuget中的cdecl和stdcall调用约定

本机Nuget中的cdecl和stdcall调用约定,nuget,Nuget,我正在尝试构建一个原生nuget包,它提供了一个调用约定的轴心,为DLL提供了针对x86构建的cdecl和stdcall约定。(大多数用户更喜欢cdecl调用约定,但P/调用此库的.NET用户出于各种原因更喜欢stdcall。) My.autopkg包含cdecl和stdcall枢轴: nuget { [nuspec omitted for brevity] files { [Win32,cdecl] { lib: bui

我正在尝试构建一个原生nuget包,它提供了一个调用约定的轴心,为DLL提供了针对x86构建的cdecl和stdcall约定。(大多数用户更喜欢cdecl调用约定,但P/调用此库的.NET用户出于各种原因更喜欢stdcall。)

My
.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;
            }
    };
}
使用本机nuget脚本构建
.nupkg
似乎成功,并且在标准C项目(具有cdecl调用约定的项目)中安装和使用nuget包成功

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

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


我怎样才能利用这个支点呢?

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


令人遗憾的是,土生土长的努吉是一个几乎没有经过测试、几乎不可操作、完全没有支持的错过机会的荒地。唯一的答案就是不要使用它。

Hmm。那应该有用的。快速提问:您使用的是哪个版本的工具和VC++?PS>show coapptoolsversion我可能需要查看生成的包文件。@Garrettsrack-VS 2013更新2和CoApp Powershell开发人员工具版本1.23.521.0。
.autopkg
和生成的
.nupkg
位于@garrettsrack。在VS项目的设置中,我是否需要做一些不同的事情来标记它的调用约定?或者nuget读取我的编译器标志来确定这一点?