2012-01-12 67 views
0
[DllImport("Project1.dll")] 
unsafe static extern void CallFu(string OpenFile, string SaveFile); 

这是C++的dll 函数get image文件字符串做不合适并将新图像保存到SaveFile字符串。C++ dll和WPF

extern "C" void __export __stdcall CallFu(char* filepath,char* savefilepath) 

然后我试图把保存的图像ImageControl

string save = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\segmentedKletka.bmp"; 
private void B_AutoSegm_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     string open = MainWindow.OsnovnoyClassPict.Pict_Source; 
     CallFu(open, save); 

     BitmapImage s_bmp = new BitmapImage(new Uri(save)); 

     Slider_Kletka.Maximum = Slider_Yadro.Maximum = s_bmp.Width; 
     Slider_Kletka.Value = Slider_Yadro.Value = s_bmp.Width/2; 
     Slider_Kletka.IsEnabled = Slider_Yadro.IsEnabled = true; 

     Img_Kletka.Source = Img_Yadro.Source = s_bmp; 

       } 

,在这里我得到

型 'System.ArithmeticException' 未处理的异常出现在mscorlib.dll错误
其他信息:Переполнениеилипотеряточностиварифметическойоперации。 (算术运算中出现溢出或下溢)

如何正确使用WPF中的C++ dll?

 [DllImport("Project1.dll")] 
     unsafe static extern void CallFu(string OpenFile, string SaveFile); 
     public Form1() 
     { 
      InitializeComponent(); 
      string open = "D:\\SPPR_Gem\\SPPRGem\\bin\\Release\\kletki\\1a2a917d-45379cc5-451b3e95-a20e772c.bmp"; 
      string save = "D:\\Projects\\SPPRGem\\SPPRGem\\bin\\Release\\segmentedKletka.bmp"; 
      CallFu(open, save); 
      pictureBox1.Image = new Bitmap(save); 
     } 

这仅限于c#。我没有错误。

P.S.对不起,我的英语不好=)

+0

你尝试调用带有C++项目中完全相同的文件路径相同的方法? – 2012-01-12 15:55:02

+0

@jberger 是的,一切正常 – Risa 2012-01-12 17:21:48

+0

可否请编辑包含完整的堆栈跟踪? – 2012-01-12 17:39:08

回答