C ++ / CLI程序集加载FileNotFoundException

时间:2015-04-13 20:15:46

标签: c++ .net dll c++-cli .net-assembly

我正在使用C ++ / CLI制作一个photoshop插件。项目中的某些文件被编译为本机代码,一个文件被编译为托管代码。因此,我无法在项目级别添加对程序集的引用,而是通过#using语句在文件级别添加引用。

我成功引用了System.dllWindows.dllPresentationFramework.dllWindowsBase.dll。 (intellisense存在一些问题,它们不想加载元数据,但编译时没有错误。我通过声明程序集的全名解决了intellisense问题。)

但是,我无法添加对我自己的非框架程序集的引用。当我在Photoshop中加载插件并进行调试时,我收到以下错误>

未处理的类型' System.IO.FileNotFoundException'发生在未知模块中。

其他信息:无法加载文件或程序集' ColorPickerControl,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 2317994184a7a708'或其中一个依赖项。系统找不到指定的文件。

我尝试更改我的dll的目标框架,使程序集共享(公共) - 因此PublicKeyToken不为null - 将其他程序集名称返回到其短名称(我更改了它们因为intellisense未加载元数据)。没有工作。

有什么建议吗?这可能是目标框架的一个问题,但我不知道应该说明什么是目标框架。它是C ++ / CLI - 没有像C#那样的属性对话框,您可以在其中轻松选择目标框架。

我的代码:

#using <System.dll>
#using <PresentationCore.dll>
#using <PresentationFramework.dll>
#using <WindowsBase.dll>


#using <C:\Users\Bogdan\Desktop\ColorPickerControl.dll>


using namespace System;
using namespace System::Windows;
using namespace System::Windows::Controls;
using namespace System::Windows::Media;
//using namespace ColorPickerControlNamespace;


char __cdecl fManaged2(const char* input)
{


    Window^ w = gcnew Window();
    Label^ l = gcnew Label();
    l->Content = "This works!";
    l->Background = Brushes::Orange;
    TextBox^ txt = gcnew TextBox();
    txt->Width = 300;
    txt->Height = 25;
    Grid^ g = gcnew Grid();
    g->Children->Add(l);
    g->Children->Add(txt);


    ColorPickerControlNamespace::ColorPickerControl^ c = gcnew ColorPickerControlNamespace::ColorPickerControl();


    w->Content = g;
    w->ShowDialog();

    Byte bb = Convert::ToByte(txt->Text);
    return bb;
}

0 个答案:

没有答案