我一直在努力写出从c ++ win32console和c ++ dll中消失的解决方案。我终于设法使他们交谈而没有链接器错误(因此我假设它们都是完全托管的c ++ / CLI项目),但是当我运行控制台时,出现以下错误。
在0x03f71849中有未处理的异常
Company.Pins.Bank.Win32Console.exe:
0xC0000005:写入访问冲突
位置0x00000001。
控制台还显示以下内容
未处理的异常:
System.NullReferenceException:对象
引用未设置为的实例
目的。在wmain中的c:... \ win32console.cpp:line
_wmainCRTStartup()处为20
但我认为这是由于未处理的异常。
跟踪此错误以及我可以在以下代码块中返回时发生错误。 (由返回链接的方法似乎可以很好地执行,只是在返回时看起来很糟糕。)以防万一您没有注意到,我自己没有编写以下代码,它是由Visual Studio生成的。
#ifdef WPRFLAG
int wmainCRTStartup(
#else /* WPRFLAG */
int mainCRTStartup(
#endif /* WPRFLAG */
#endif /* _WINMAIN_ */
void
)
{
/*
* The /GS security cookie must be initialized before any exception
* handling targetting the current image is registered. No function
* using exception handling can be called in the current image until
* after __security_init_cookie has been called.
*/
__security_init_cookie();
return __tmainCRTStartup();
}
#include "stdafx.h"
#include "UInstruction.h"
#define DllExport __declspec(dllexport)
#define DllImport __declspec(dllimport)
using namespace System;
编辑:和win32console.cpp代码如下。
//int main(array<System::String ^> ^args)
int _tmain(int argc, _TCHAR* argv[])
{
auto P2 = (TCHAR *)"3 Barrowstead";
TCHAR* P3 = (TCHAR *)"3 Barrowstead";
double* P1;
P1[0] = 13;
UserInstruction(P1, P2, P3);
}
最佳答案
您声明一个指针并且不对其进行初始化,因此它不会指向一个对象(它包含一些垃圾地址):
double* P1;
然后,您尝试写入此未初始化的指针指向的位置:
P1[0] = 13;
您不能使用未初始化的变量。在取消引用之前,需要初始化
P1
指向某个对象。关于visual-studio-2010 - 为什么我会用C++/CLI编写未处理的异常访问冲突?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5886103/