我有一个暴露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实用程序来获取那个长函数名称,无论我如何更改该行,尽管我仍然得到相同的错误。