C ++ DLL“无法找到入口点”

时间:2014-03-08 00:39:14

标签: c# c++ dllimport

所以我看了关于SO的其他问题。出于某种原因,我仍然遇到这个问题。

  

“无法找到入口点”

我的CPP

extern "C"{
    __declspec(dllexport) int GetPose()
    {
        if (currentPose == myo::Pose::none)
            return 0;
        else if (currentPose == myo::Pose::fist)
            return 1;
        else
            return -1;
    }
}

我的C#

public partial class MainWindow : Window
{
    [DllImport("MyoWrapper.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern int GetPose();
public MainWindow()
{
    InitializeComponent();
    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = new TimeSpan(100);
    timer.Tick += (sender, args) => 
    {
      int x = GetPose(); 
    };
    timer.Start();
}

}

2 个答案:

答案 0 :(得分:4)

导致此错误的最可能原因如下

  1. GetPos块中未定义extern "C"方法。这会导致名称作为C ++受损名称发出,因此DllImport属性上的名称错误
  2. MyoWrapper.dll文件与可执行文件的路径不同,因此无法找到它
  3. 鉴于错误是“切入点”,我打算下注#1是原因。

答案 1 :(得分:0)

解决方案并不坏。

我正在尝试将带有main的程序转换为DLL,所以显然我想要公开的方法不是入口点。一旦我暴露了所有方法并将main设置为C#中的入口点,它就可以正常工作了。

[DllImport("MyoWrapper.dll", EntryPoint = "main")]