所以我看了关于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();
}
}
答案 0 :(得分:4)
导致此错误的最可能原因如下
GetPos
块中未定义extern "C"
方法。这会导致名称作为C ++受损名称发出,因此DllImport
属性上的名称错误MyoWrapper.dll
文件与可执行文件的路径不同,因此无法找到它鉴于错误是“切入点”,我打算下注#1是原因。
答案 1 :(得分:0)
解决方案并不坏。
我正在尝试将带有main的程序转换为DLL,所以显然我想要公开的方法不是入口点。一旦我暴露了所有方法并将main设置为C#中的入口点,它就可以正常工作了。
[DllImport("MyoWrapper.dll", EntryPoint = "main")]