尝试在WPF C#应用程序中重用MFC dll

时间:2015-10-23 14:13:19

标签: c# wpf mfc

我有一个暴露COM接口的DLL。我以前在一个简单的MFC Dialog应用程序中使用过它。 我需要在WPF应用程序中重用该DLL(使用C#)。我一直试图使用DllImport指令无济于事。 我把它归结为一个非常简单的项目,但我仍然无法让它运行。

// MFC dll header
#include "stdafx.h"
#include "Worker.h"

Worker::Worker(void)
{
}

Worker::~Worker(void)
{
}

int Worker::GetInteger()
{
    return 44;
}

//WPF code
   public partial class MainWindow : Window
    {
        [DllImport("C:\\Users\\mspath\\Documents\\MDS_SIMCA\\DevSIMCA_Dll\\TestDLL\\Debug\\MFCLib.dll", 
                 EntryPoint = "?GetInteger@Worker@@SAHXZ",
                 ExactSpelling=false, 
                 SetLastError=true, 
                 CallingConvention = CallingConvention.ThisCall)]
        //public static extern void CreateSIMCAProj(bool bBatch, System.String csFilePath, System.String csProjName);
        public extern static int GetInteger();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int iTest = GetInteger();
        }
    }

运行时出现的错误,无论我列出了正确的dll名称,都是..

"无效的PInvoke调用约定。此调用要求第一个参数存在且可以注册。"

我在dll上运行dumpbin.exe实用程序来获取那个长函数名称,无论我如何更改该行,尽管我仍然得到相同的错误。

0 个答案:

没有答案