2013-10-11 20 views
7

thisはazure web/workerロールがネイティブC++ dllを読み込むことができます。 紺碧のウェブサイトもこれをサポートしていますか?azure Webサイトのサポートp/invokeを実行してネイティブC++ dllをロード

私のサイトはローカルドライブからファイルを読み込み、計算を実行するネイティブなC++ DLLをp/invokeするmvcサイトです。私が紺碧のウェブサイトを好む理由は、無料で始まるからです。

ありがとうございました。

答えて

7

Azure Webサイトでは、ネイティブdllを読み込むこともできます。私はちょうどそれを働かせました。

  1. はあなたのソリューションをコンパイルします

    はこちら(hereから呼ぶ)の手順です。

  2. 管理対象プロジェクトを右クリックし、[Add/Existing Item]を選択します。 「参照の追加」は使用しないでください。

  3. コンパイル済みのネイティブDLLに移動し、それを選択します(必要に応じてファイルタイプを調整します)。

  4. [追加]分割ボタンの下矢印をクリックし、[リンクとして追加]を選択します。

  5. 新たに追加したファイルを右クリックし、[プロパティ]を選択します。

  6. 「ビルドアクション」が「コンテンツ」で、「出力ディレクトリにコピー」が「常にコピーする」または「新しい場合はコピーする」に設定されていることを確認してください。

注意:手順2では、dllがbinフォルダにコピーされ、Azureサーバーにアップロードされるように、プロジェクトを右クリックする必要があります。それを直接プロジェクトの代わりにいくつかのフォルダに入れると、dllは/ bin/somefolderにコピーされますが、それはまだ見えません。

これが役に立ちます。

+0

これは、dllが既にbinフォルダに終わっていない場合に重要になります。それが既にあった場合(つまり、ナゲットの配備など)は、次のように表示する必要があります。http://stackoverflow.com/questions/28275944/how-to-include-libsodium-net-on-asp-net – guysherman

3

ネイティブDLLを読み込むことはできますが、いくつかの要件があります。まず、x86ではなくx64をターゲットにする必要があります。

また、あなたが適切なツールセットに対してそれを構築する必要があります。デフォルトでは

は、Visual C++ 2008のための唯一のVisual C++ランタイムライブラリは、Windows Azureの労働者とウェブの役割にインストールされています。したがって、Visual C++ 2010またはVisual C++ 2005のVisual C++ランタイムライブラリに対してコンパイルされたネイティブコードは、ワーカーおよびWebロールインスタンスに読み込まれません。 Visual Studio 2008とVisual Studio 2010の両方が同じコンピュータにインストールされている場合は、Visual Studio 2010のネイティブマルチターゲット機能を使用して、Visual Studio 2008プラットフォームツールセット(コンパイラ、リンカー、ヘッダー、およびライブラリ)。 Visual Studio 2010を使用してVisual Studio 2008プラットフォームツールセットでアプリケーションを構築する方法の詳細については、C++ネイティブマルチターゲット(http://go.microsoft.com/fwlink/p/?LinkId=231170)を参照してください。

また、ネイティブDLLの要件をサーバーにコピーする昇格された起動タスクをセットアップすることもできます。

詳細については、Best Practices for Running Unmanaged Code in Windows Azure Applicationsを参照してください。

+2

ありがとう、これらはすべてazureウェブサイトにも適用されますか?私はあなたの答えは、Webの役割(クラウドサービス)を参照してくださいと思う – Xin

+0

@ Xin私はこれを発見した:http://stackoverflow.com/questions/28275944/how-to-include-libsodium-net-on-asp-net最もAzure Websitesにとって価値がある – guysherman

+0

Azureウェブサイト/ AppServiceが実行しているものと一致する必要があります(32ビットに設定可能)。 – guysherman

関連する問題