2016-11-30 18 views
2

私は作っていますthisXGBoostから構築されたlibxgboost.dllをピンボケするNuGetパッケージ(source)です。ただし、現在libxgboost.dllが見つからないため、例外がスローされています。NuGetパッケージにピンボケされたdllをどのように含めるのですか?

NuGetパッケージにlibxgboost.dllを含めるにはどうすればいいですか?

コード(インストール済みパッケージと)を呼び出す

using System; 
using XGBoost; 

namespace TestXGBoostPackage 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      XGBRegressor r = new XGBRegressor(); 
      float[][] X = new float[2][]; 
      X[0] = new float[2]; 
      X[0][0] = 0; 
      X[1] = new float[2]; 
      X[1][0] = 1; 
      float[] y = {0, 1}; 
      r.Fit(X, y); 
      Console.ReadKey(); 
     } 
    } 
} 

フィット呼び出しによってスローされる例外()

An unhandled exception of type 'System.DllNotFoundException' occurred in XGBoost.dll 

Additional information: Unable to load DLL 'libxgboost.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 

フィット(でPInvoked機能のためのDLL import文)

[DllImport("libxgboost.dll")] 
public static extern int XGDMatrixCreateFromMat(float[] data, ulong nrow, ulong ncol, 
               float missing, out IntPtr handle); 
パッケージのプロジェクトのプロパティで

パッケージためnuspecファイル

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>PicNet.XGBoost</id> 
    <version>0.0.2.1</version> 
    <title>XGBoost.Net</title> 
    <authors>John Smith</authors> 
    <owners>John Smith</owners> 
    <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> 
    <projectUrl>https://github.com/PicNet/XGBoost.Net</projectUrl> 
    <iconUrl>http://www.picnet.com.au/wp-content/uploads/2015/01/logo-dark.png</iconUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>.Net wrapper for the XGBoost machine learning library.</description> 
    <releaseNotes>test dll dependency fix</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <tags>machine learning xgboost boosted tree</tags> 
    </metadata> 
</package> 

、ビルド出力パスはbin\Debug\で、プラットフォームターゲットはx64です。

答えて

1

あなたは、ネイティブライブラリのネイティブNuGetパッケージをパック

https://docs.nuget.org/ndocs/create-packages/native-packages

そして、管理対象NuGetパッケージがその依存することができるかもしれません。

+0

答えをありがとう。つまり、元の[XGBoost](https://github.com/dmlc/xgboost)のC++コードからネイティブのNuGetパッケージを作成し、それをNuGetパッケージで参照する必要がありますか?それは私が別にピンボケしなければならないか、ピンボケとは違う何かを使用しなければならないということですか? – cycloidistic

関連する問題