我正在嘗試構建一個本地nuget包,它提供了調用約定的一個關鍵點,爲x86構建提供了具有cdecl和stdcall約定的DLL。 (大多數用戶更喜歡cdecl調用約定,但誰的P/Invoke這個庫.NET用戶寧願STDCALL因各種原因。)本機Nuget的cdecl和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;
}
};
}
使用構建.nupkg
本地nuget腳本似乎成功,並且在標準C項目(一個使用cdecl調用約定)中安裝和使用nuget包成功。
但是,如果我創建一個新的C項目並將調用約定設置爲stdcall並安裝nuget包,則不會獲得我的庫的stdcall版本。相反,cdecl版本已安裝,我無法鏈接。
我很樂觀Nuget軟件包管理器會檢測我的項目配置並使用適當的調用約定數據透視(就像處理器類型一樣),但這似乎並沒有發生。我也沒有給出選擇手動選擇調用約定的選項。但事實上,有是在autopkg配置中的一個關鍵點讓我覺得我可能選擇一個。
我該如何利用這個支點?
嗯。 *應該*起作用了。 Quick Question:您正在使用哪個版本的工具和VC++? PS> show-coapptoolsversion 我可能需要查看生成的包文件。 –
@GarrettSerack - VS 2013 Update 2和CoApp Powershell開發者工具版本1.23.521.0。 '.autopkg'和生成的'.nupkg'位於http://www.edwardthomson.com/temp/libgit2.0.0.3.0.zip –
@GarrettSerack我需要在VS項目的設置中以不同的方式做用它的調用約定標記它?或者Nuget讀取我的編譯器標誌來確定這一點? –