嘿,这是第一次使用C ++,所以请客气:)
我制作了一个WinRT应用程序,由于使用了某种类型的“沙盒”,因此它无法对那些应用程序进行访问(我想访问的内容-我的桌面应用程序。)>
因此到处阅读,我发现如果您制作一个C ++ Dll并从WinRT应用程序中调用它,那将允许您在“沙箱”之外进行调用。但是那里有一个小问题。
我当前遇到错误:
错误CS1660无法将lambda表达式转换为类型'string',因为它不是委托类型。
在此使用此代码:
void Header_Click(object sender, RoutedEventArgs e) { DisplayFromDLL("tester", s => { // response is returned in s - do what you want with it }); }
DisplayFromDLL是它从中抛出该错误的位置。更多的是“ s”。
因此,我必须使用如下方式调用dll的C#代码:
public sealed partial class GroupedItemsPage : Page { [DllImport("Win32Project1.dll", EntryPoint = "DisplayFromDLL", CallingConvention = CallingConvention.StdCall)] public static extern void DisplayFromDLL(string name, String response); void Header_Click(object sender, RoutedEventArgs e) { DisplayFromDLL("tester", s => { // response is returned in s }); }
和C ++ dll代码:
extern "C" { __declspec(dllexport) void DisplayFromDLL(const char name) { MessageBox("name is: " + name, "Msg title", MB_OK | MB_ICONQUESTION); } }
因此,如果有什么帮助,可以看出是哪一方引起了该错误以及如何解决该错误。
嘿,这是第一次使用C ++,所以请客气:)我制作了一个WinRT应用程序,由于存在某种类型的“沙盒”,因此它对那些应用程序起作用,所以我无法访问该类之外的任何内容(例如。 ..
您的定义(在DLL中),声明(在c#端)和实际调用根本不匹配。
嗯,我认为我在这里找到了实现目标的好方法。
开发桌面应用程序