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
テストしているマシンでは使用できないC++ランタイムに関連していますか? –
*正確なエラー*は何ですか?メッセージは 'FileLoadException'のように聞こえますが、これは通常、なぜ*なぜ*アセンブリをロードできないのかについての詳細を持っています。 –
エラーメッセージの画像へのリンクを含む投稿を編集しましたが、私の名前はファイルパスから除外されています。 –