2016-06-22 31 views
3

Powershell v3 x86と(管理されていない)C++アプリケーションの間のインターフェイスにC++ CLI(Managed C++).dllを使用します。PowershellのアセンブリとしてC++ CLIの.dllを使用する

が、私はPowerShellで両方Add-Type[System.Reflection.Assembly]::LoadWithPartialName()を使用してC++ CLIで書かれた非常にシンプルな「Hello World」プログラムをロードしようとしましたが、私はエラーを取得:「ファイルまたはアセンブリをロードできませんでした」

I C++ CLIクラス用のC#ラッパーを作成し、同じメソッドを使用してPowershellに正常にロードしましたが、C++ CLIコードを参照する呼び出しを行うと同じエラーが発生します。 C#コード自体は、C++ CLI .dllへの呼び出しには何の問題もないようですが、Powershellはそうしています。

Accessor.h:

using namespace System; 

namespace Accessor { 

    static public ref class Greeting 
    { 
    public: 
    static void HelloWorld(); 
    }; 
} 

Accessor.cpp:

#include "Accessor.h" 

void Accessor::Greeting::HelloWorld() 
{ 
    Console::WriteLine("Hello World!\n"); 
} 

Wrapper.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Accessor; 

namespace AccessWrap 
{ 
    static public class Wrapper 
    { 
     static public void HelloWorld() 
     { 
     Greeting.HelloWorld(); 
     } 
    } 
} 

これを実現するための正しい方法は何ですか?私はオンラインで見つけた多くの方法を試しましたが、誰も私のために働いていませんでした。

編集: これは直接C++ CLIをロードするための.dllしようとしたとき、私が得る正確なエラーです:私は誤って64ビットPowerShellを使用していた http://imgur.com/HF5VRkf

+0

テストしているマシンでは使用できないC++ランタイムに関連していますか? –

+0

*正確なエラー*は何ですか?メッセージは 'FileLoadException'のように聞こえますが、これは通常、なぜ*なぜ*アセンブリをロードできないのかについての詳細を持っています。 –

+0

エラーメッセージの画像へのリンクを含む投稿を編集しましたが、私の名前はファイルパスから除外されています。 –

答えて

0

、ないのx86は次のように私は思いました。私はx86に切り替えて、正常に動作します。

皆様のご協力ありがとうございます。

関連する問題