У меня есть следующий кодСмешение управляемым и неуправляемым кодом проблема
System::Void MainForm::initLoadCell(){
//Open the first found LabJack U3 over USB.
lngErrorcode = OpenLabJack (LJ_dtU3, LJ_ctUSB, "1", TRUE, &lngHandle);
//Load defualt config
lngErrorcode = ePut (lngHandle, LJ_ioPIN_CONFIGURATION_RESET, 0, 0, 0);
//Setup FIO0 as an analogue input port
lngErrorcode = ePut (lngHandle, LJ_ioPUT_ANALOG_ENABLE_BIT,0,1,0);
//Obtain error string
char* errorcode = new char;
ErrorToString(lngErrorcode, errorcode);
// Convert the c string to a managed String.
String^errorString = Marshal::PtrToStringAnsi((IntPtr) (char *) errorcode);
MainForm::textBox_LoadCellError->Text = errorString;
Marshal::FreeHGlobal((IntPtr)errorcode);
}
Это работает, когда я запускаю программу непосредственно из Visual Studio, но когда я создаю файл с расширением .exe и работать как автономно я получаю следующее сообщение об ошибке
Problem signature:
Problem Event Name: APPCRASH
Application Name: BenchTester.exe
Application Version: 0.0.0.0
Application Timestamp: 52f4c0dd
Fault Module Name: ntdll.dll
Fault Module Version: 6.1.7601.18247
Fault Module Timestamp: 521ea8e7
Exception Code: c0000005
Exception Offset: 0002e3be
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 3081
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
Я знаю, что это вызвано следующей строкой
ErrorToString(lngErrorcode, errorcode);
Это призыв к 3 я предполагаю, что ошибка связана с кодом, который не имеет отношения к неуправляемому коду правильно, но я не уверен, где. Может ли кто-нибудь указать мне в правильном направлении.
Спасибо, что на самом деле поможет, но не исправит проблему, я подумал, что при использовании только нового символа он создаст необходимый размер. Во всяком случае, к сожалению, у меня все еще есть ошибка. Я нашел работу вокруг стороннего оборудования на самом деле поставляется с .net-оболочкой, поэтому все хорошо теперь благодарит. – codem
Еще лучше: 'char errorCode [1024];' Избегать динамического распределения, когда это не нужно. –