반응형

- C++/CLI 에서는 try - catch block을 선언 하게 되면 C++ Exception과 CLR Exception 중 어떤것을 Catch 할지 선택 할 수 있다.

- 아래의 코드는 Managed Exception을 Catch하는 방법이다.

try
{
	//Your code
}
catch (Exception ^ex)
{
	//Catch Managed Exception
}
finally
{
	
}

 

- UnManaged Exception Catch는 기존 C++에서 하던것 같이 아래와 같이 하면 될 것이다.

- 저도 아래의 코드는 실제로 실행해 보지는 않아서 확인해 보시고 사용하길 권장 합니다. ^^:

 

try
{
	//Your code
}
catch (...)
{
	//Catch UnManaged Exception
}
finally
{
	
}

'Programing > C++|CLi' 카테고리의 다른 글

C++/CLI 에서 Lock 거는 법  (0) 2019.12.03
C++/Cli , Convert String^ , const char* ,string  (0) 2017.06.08
반응형

기존에 Lock 키워드를 사용해도 되지만, 좀더 간단한 방법이 있어서 글을 씁니다.

//헤더파일에 정의되어 있는 static 필드
static  Object^ _obj = gcnew Object();;
static bool _openKernel;

//길게 쓰기 싫어서 Using을 합니다.
using namespace System::Threading;
static property bool OpenKernal
{
    bool get()
    {
        return _openKernel;
    }

    void set(bool value)
    {
        Monitor::Enter(obj); //System.Threading에 존재 하는 Monitor, Enter로 락을 겁니다.
        try
        {
            _openKernel = value;
        }
        finally
        {
            Monitor::Exit(obj); //Lock을 해제 합니다.
        }
    }
}

이렇게 해서 Lock을 좀더 간편 하게? 걸어 보았다.

End

'Programing > C++|CLi' 카테고리의 다른 글

C++ Managed , Exception Catch & Handling  (0) 2022.08.23
C++/Cli , Convert String^ , const char* ,string  (0) 2017.06.08
반응형

Convert String^ to const char*

//String^을 const wchar_t*
#include " vcclr.h"
using namespace System;
using namespace System::Runtime::InteropServices;

//String^ 을 const char*
  String^ fileName = "name";
  const char* filePath = (const char*)(Marshal::StringToHGlobalAnsi(fileName)).ToPointer();
  Marshal::FreeHGlobal((IntPtr)(char*)filePath); // 반드시 호출해 줘야함. 안하면 memory leak 

Convert const char* to String^

using namespace System;
using namespace System::Runtime::InteropServices;

String^ ConvertCharPtrToString(const char* text)
{
    String^ resultStr =  Marshal::PtrToStringAnsi((IntPtr)(char*)text);
    return resultStr;
}

Convert strint to STring^

#include <windows.h>
#include <string>
using namespace System;
using namespace System::Runtime::InteropServices;

String^ ConvertstringToStringCli(std::string text)
{
    String^ resultStr = gcnew String(text.c_str());
    return resultStr;
}

'Programing > C++|CLi' 카테고리의 다른 글

C++ Managed , Exception Catch & Handling  (0) 2022.08.23
C++/CLI 에서 Lock 거는 법  (0) 2019.12.03

+ Recent posts