Tag: native

0x00007FFCF05E675B处的未处理exception(Windows.UI.Xaml.dll)

我已经开发了一个UWP应用程序 ,我已经设法在商店中构建和发布包,没有任何问题。 由于一些用户遇到性能问题,我想通过使用“ .Net Native tool chain ”编译代码来测试我的上一次更改。 但是在构建结束之前我得到了一个exception: 如果我取消选中“ 使用.NET Native工具链编译 ”的情况,则不再存在问题。 其他构建参数是“ Release ”和“ x64 ”。 你有什么想法吗? 我创建包裹时为什么不遇到此exception? [编辑] 2017-02-13:什么是新的 我有一些关于这个问题的消息。 首先,Store版本有一个新的“bug”,当通过OnNavigatedFrom()离开页面时似乎会出现这个问题: protected override void OnNavigatedFrom(NavigationEventArgs e) { ViewModel = this.DataContext as DetailsViewModel; if (!ViewModel.ToChildNavigate) { // Dispose resources this.Resources.Clear(); this.Loaded -= DetailsPage_Loaded; ViewModel = null; } base.OnNavigatedFrom(e); } 在调试模式下,此代码非常有效… 我还说过,我实际上可以使用“ .Net Native […]

C#项目设置“允许不安全的代码”的实际function是什么

我想知道C#项目设置“允许不安全代码”是否仅适用于项目本身的不安全C#代码,还是在链接本机C ++ DLL时是否需要设置此选项? 如何链接自身链接到本机DLL的托管DLL? 这个选项在引擎盖下真正做了什么?

C#调用C DLL,传递char *作为参数不正确

我在VS2012中用C#语言调用DLL(C写)。 mylib.dll是我要在C#中调用的本机dll,而mylib.dll也会调用另一个mylib_another.dll。 C函数声明为: extern DECLSPEC_DLL BOOLEAN_TYPE SetConnection(char *dev, char *addr); 在My C#文件中,我将其声明为: [DllImport(“C:\\mylib.dll”, EntryPoint = “SetConnection”, CharSet = CharSet.Auto)] public static unsafe extern int SetConnection(StringBuilder dev, StringBuilder addr); 当我在代码中调用它时,我发现字符串只传递了一个字符,当我将dev作为“USB”传递时,本机DLL实际上只获得了一个“U”。 如果我将声明改为: [DllImport(“C:\\mylib.dll”, EntryPoint = “SetConnection”, CharSet = CharSet.Ansi)] public static unsafe extern int SetConnection(StringBuilder dev, StringBuilder addr); 然后它将引发System.AccessViolationExceptionexception: System.Reflection.TargetInvocationException was unhandled HResult=-2146232828 Message=Exception has been thrown […]

用于DOTNET的包装器用C ++ CLI编写的本机BestWay通过strutures?

然而,我正在为C ++ CLI编写一个包装器,为我们的应用程序提供一些新的部件(用C#编写),可以保存并轻松访问旧的本机库。 因此我需要将一些结构从c#传递给c ++。 这些结构在C ++ Cli(dotnet)和C ++中定义。 例: \\C+++ typedef struct { INFO16 jahr ; INFO8 monat ; INFO8 tag ; INFO8 stunde ; INFO8 minute ; } SDATUM; \\c++ cli [StructLayout(LayoutKind::Explicit)] public value struct SDATUM { public: [FieldOffset(0)] UInt16 jahr; [FieldOffset(2)] Byte monat; [FieldOffset(3)] Byte tag; [FieldOffset(4)] Byte stunde; [FieldOffset(5)] Byte minute; […]

如何在发布模式+“.Net Native工具链”中调试UWP应用程序

我已经开发了一个可以在全球范围内正常运行的UWP应用程序 ,但是我遇到了Store应用程序或Release版本的一些问题,而在Debug构建中一切正常… 该应用程序似乎非常基本:ts允许用户通过Web服务创建和同步表单。 在应用程序启动时,将进行测试以查看用户是否已登录:如果不是这样,则应用导航到“ 登录 ”页面,否则导航到“ 主页 ”页面,其中包含表格清单。 然后,用户可以通过“ 详细信息 ”页面编辑每个表单。 “调试模式: 当我在“调试”模式下构建应用程序时,我没有遇到任何未捕获的exception,并且一切正常 。 商店应用: Store应用程序的最新版本已成功生成并validation,没有任何问题。 但是,当用户从“ 详细信息 ”页面返回“ 主页 ”页面时,我的最后一项更改会引发应用程序崩溃 。 我怀疑这个更改特别引发错误:我在“ 详细信息 ”视图中添加了一些代码来通过“ OnNavigatedFrom ()”来清理资源: protected override void OnNavigatedFrom(NavigationEventArgs e) { ViewModel = this.DataContext as DetailsViewModel; if (!ViewModel.ToChildNavigate) { // Dispose resources this.Resources.Clear(); this.Loaded -= DetailsPage_Loaded; ViewModel = null; } base.OnNavigatedFrom(e); } 为了解决这个问题,我想在“发布”模式下使用“.Net […]

如何调用c#(mono,.net)方法,来自本地c的委托

是否可以从本机c代码(以及如何)调用托管代码(可能在类或库中)编写的c#方法? 谢谢 编辑:使用“c#”我主要是指mono或甚至portable.net,操作系统是Linux

WinForms相当于WPF WindowInteropHelper,HwndSource,HwndSourceHook

我有一块代码,如: IntPtr hWnd = new WindowInteropHelper(this).Handle; HwndSource source = HwndSource.FromHwnd(hWnd); source.AddHook(new HwndSourceHook(WndProc)); NativeMethods.PostMessage((IntPtr)NativeMethods.HWND_BROADCAST, NativeMethods.WM_CALL, IntPtr.Zero, IntPtr.Zero); 这最初是在WPF应用程序中。 但是,我需要在WinForms应用程序中复制该function。 另外,NativeMethods.PostMessage只是映射到user32.dll PostMessage: [DllImport(“user32”)] public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); 我可以在WinForms应用程序中使用1到1当量的WindowInteropHelper/HwndSource/HwndSourceHook吗?

是否有最佳实践来访问C ++本地COM函数以从C#进行互操作?

是否有最佳实践来访问C ++本地COM函数以从C#进行互操作? 例如,如果我有100个C ++方法(基本上是本机库),它与核心窗口组件交互。 我想基本上在C#中为这些C ++方法创建一个包装器,所以我所有新雇用的员工都可以使用它而不是C ++等.C ++代码是遗留的并且让我感到害怕,所以我只想处理它一次。 这里的方法是否为每个方法都有一个相应的C#方法? 事实上,还有另一种方法吗? 我可以使用某种包装子系统吗? 你们这些人一般都这样做吗? 此外,是否有任何性能考虑等?

为什么从.net调用的本机代码会从本机程序中调用它而产生不同的结果?

我们有一个本地库,我们用它来为我们执行安全相关的任务。 我们编写了一个互操作库,以便我们可以在.NET中使用它。 我们有两个测试应用程序,第一个应用程序是用C ++编写的(非托管),第二个是用C#编写的。 它们生成与本机库完全相同的调用序列,但会产生不同的结果。 我迷路了,在.NET导入定义中找不到任何明显的错误。 我已经把它搞砸了,所以我只使用一个非常简单的界面。 我正在寻找为什么从.NET环境调用本机库可能会影响结果的想法。 编辑:我没有深入了解库,所以我不能提供很多关于本机代码的function。 我知道它确实维持(热潮)线程。 库的另一部分(用于标识应用程序是否在VM上运行)也表现出相同的行为。 这不一定相关。 我在C ++ / CLI中编写了另一个测试应用程序,因为它比使用C#更容易使用本机库,并且它也提供与C#相同的结果。

如何从托管代码项目中调试本机代码项目? C ++ / C#

如何从托管代码项目中调试本机代码项目? 我使用C#调用C ++代码,需要调试C ++代码。 否则,我必须退出项目,打开C ++项目,创建一个测试人员,然后调试代码。 这太可怕了。