在 Powershell 中使用 C++CLI .dll 作为程序集
Using a C++CLI .dll as an assembly in Powershell
我想使用 C++CLI(托管 C++).dll 连接 Powershell v3 x86 和(非托管)C++ 应用程序。
我尝试在 powershell 中同时使用 Add-Type
和 [System.Reflection.Assembly]::LoadWithPartialName()
加载一个用 C++CLI 编写的非常简单的 "Hello World" 程序,但出现错误:"Could not load file or assembly"
然后我为 C++CLI class 编写了一个 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();
}
}
}
完成此任务的正确方法是什么?我尝试了很多在网上找到的其他方法,但 none 对我有用。
编辑:
这是我在尝试直接加载 C++CLI .dll 时遇到的确切错误:
http://imgur.com/HF5VRkf
我不小心使用了 64 位 powershell,而不是我想的 x86。我切换到 x86,它工作正常。
感谢大家的帮助。
我想使用 C++CLI(托管 C++).dll 连接 Powershell v3 x86 和(非托管)C++ 应用程序。
我尝试在 powershell 中同时使用 Add-Type
和 [System.Reflection.Assembly]::LoadWithPartialName()
加载一个用 C++CLI 编写的非常简单的 "Hello World" 程序,但出现错误:"Could not load file or assembly"
然后我为 C++CLI class 编写了一个 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();
}
}
}
完成此任务的正确方法是什么?我尝试了很多在网上找到的其他方法,但 none 对我有用。
编辑: 这是我在尝试直接加载 C++CLI .dll 时遇到的确切错误: http://imgur.com/HF5VRkf
我不小心使用了 64 位 powershell,而不是我想的 x86。我切换到 x86,它工作正常。
感谢大家的帮助。