使用C ++ CLI .dll作为Powershell中的程序集

时间:2016-06-22 23:40:28

标签: c# .net powershell dll c++-cli

我想使用C ++ CLI(托管C ++)。dll来连接Powershell v3 x86和(非托管)C ++应用程序。

我尝试在powershell中使用Add-Type[System.Reflection.Assembly]::LoadWithPartialName()加载一个用C ++ CLI编写的非常简单的“Hello World”程序,但是我收到错误:“无法加载文件或组件“

然后我为C ++ CLI类编写了一个C#包装器,使用相同的方法将其成功加载到Powershell中,但是当我进行一个引用C ++ CLI代码的调用时,我得到了同样的错误。调用C ++ CLI .dll时,C#代码本身似乎没有任何问题,但是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时遇到的确切错误: http://imgur.com/HF5VRkf

1 个答案:

答案 0 :(得分:0)

我不小心使用64位PowerShell,而不是像我想的那样使用x86。我切换到x86,它工作正常。

感谢大家的帮助。