Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows mobile本机异常C#/C++;_C#_C++_Windows Mobile_Native - Fatal编程技术网

Windows mobile本机异常C#/C++;

Windows mobile本机异常C#/C++;,c#,c++,windows-mobile,native,C#,C++,Windows Mobile,Native,我有一个包含两个项目的windows mobile解决方案。一个用C语言编写,另一个用C++编写(编译成DLL的非托管代码)。 C语言编写的部分调用DLL中的一些C++函数,连接到服务器。 如果我打开应用程序并连接到服务器,一切正常。如果将其最小化,或者在应用程序上打开另一个windows mobile应用程序并再次尝试连接到服务器,则会出现本机异常代码。(异常代码:0xc000001d。) 你知道当我最小化我的应用程序时,我的本机代码会发生什么吗?为什么它不再工作了?错误同时出现在模拟器和目标

我有一个包含两个项目的windows mobile解决方案。一个用C语言编写,另一个用C++编写(编译成DLL的非托管代码)。 C语言编写的部分调用DLL中的一些C++函数,连接到服务器。 如果我打开应用程序并连接到服务器,一切正常。如果将其最小化,或者在应用程序上打开另一个windows mobile应用程序并再次尝试连接到服务器,则会出现本机异常代码。(异常代码:0xc000001d。)

你知道当我最小化我的应用程序时,我的本机代码会发生什么吗?为什么它不再工作了?错误同时出现在模拟器和目标设备上。
我使用Windows 6.1 Professional和CF 3.5

异常代码0xc000001d是状态非法指令。即,代码试图运行不属于处理器指令集的指令

原因可能有很多:

  • 堆栈损坏(由于数组溢出)
  • 损坏的dll/二进制文件
请参阅处理窗口状态更改(最小化/最大化/还原)的代码。查看对诸如
memcpy
strcpy
等函数的调用是否未完成。这些是不安全的函数,其后缀为
\s
。检查一些原始指针/数组操作是否写入超出其边界而导致错误。如果您确定是由于dll中的代码造成的,请检查dll的完整性

编辑:

如果您随身携带DLL的源代码,请使用上的映射文件生成功能构建它(链接器参数:
/MAPINFO:EXPORTS
)。当抛出异常时,通常会在二进制文件中找到崩溃发生的地址;这可以在映射文件中查找,以了解崩溃的确切函数(这是堆栈损坏确切的函数只会有一点帮助,但它会给出损坏的附近区域)。有关更多详细信息,请参阅