Windows mobile本机异常C#/C++;
我有一个包含两个项目的windows mobile解决方案。一个用C语言编写,另一个用C++编写(编译成DLL的非托管代码)。 C语言编写的部分调用DLL中的一些C++函数,连接到服务器。 如果我打开应用程序并连接到服务器,一切正常。如果将其最小化,或者在应用程序上打开另一个windows mobile应用程序并再次尝试连接到服务器,则会出现本机异常代码。(异常代码:0xc000001d。) 你知道当我最小化我的应用程序时,我的本机代码会发生什么吗?为什么它不再工作了?错误同时出现在模拟器和目标设备上。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 6.1 Professional和CF 3.5异常代码0xc000001d是状态非法指令。即,代码试图运行不属于处理器指令集的指令 原因可能有很多:
- 堆栈损坏(由于数组溢出)
- 损坏的dll/二进制文件
memcpy
、strcpy
等函数的调用是否未完成。这些是不安全的函数,其后缀为\s
。检查一些原始指针/数组操作是否写入超出其边界而导致错误。如果您确定是由于dll中的代码造成的,请检查dll的完整性
编辑:
如果您随身携带DLL的源代码,请使用上的映射文件生成功能构建它(链接器参数:/MAPINFO:EXPORTS
)。当抛出异常时,通常会在二进制文件中找到崩溃发生的地址;这可以在映射文件中查找,以了解崩溃的确切函数(这是堆栈损坏确切的函数只会有一点帮助,但它会给出损坏的附近区域)。有关更多详细信息,请参阅