Managed C++에서 C++의 CString과 C#의 String 간의 변환은 다음과 같이 할 수 있음.

만약 native->name 이 CString 형식이고 이를 C#의 String 형식으로 불러오고 싶을 때 속성을 이렇게 설정하면 된다.

property String^ Name
{
	String^ get() 
	{ 
		//return name;
		return gcnew String(native->name);
	}
	void set(String^ _value) 
	{
		//name = _value;
		char* _name = (char*)Marshal::StringToHGlobalAnsi(_value).ToPointer();
		native->name.Format("%s", _name);
		Marshal::FreeHGlobal(IntPtr(_name));
		OnPropertyChanged("Name");
	}
}

Posted by 하솔

2012/10/20 15:07 2012/10/20 15:07
Response
No Trackback , No Comment
RSS :
http://blog.hasol.net/rss/response/411

반나절 동안 이곳 저곳을 검색해서 얻은 해법을 기록한다.

"LuaInterface"는 Lua 스크립트를 C#에서 사용할 수 있도록 제공하는 인터페이스이다.

관련되는 사이트의 주소는 다음과 같다.

1) LuaInterface in LuaForge: http://luaforge.net/projects/luainterface/
2) LuaInterface Source Code Homepage: http://code.google.com/p/luainterface/

사용하기 위해서는 LuaForge에서 다운로드 받은 후 "LuaInterface.dll"을 참조에 추가하면 된다.

Visual Studio 2010에서는 .net 4.0을 기본으로 프로젝트를 생성하기 때문에,
다운로드 받은 LuaInterface를 참조하여 사용하면 다음과 같은 에러 메시지를 출력한다.

에러 메시지

영문 메시지: Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

한글 메시지: 혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'에 대해 빌드되며 추가 구성 정보 없이 '4.0' 런타임에 로드할 수 없습니다.

위 에러는 다음과 같은 방법으로 해결할 수 있다.

참고: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/5d1186ec-ad55-4929-b1e4-8806cdc758af

1. 해당 프로젝트의 "app.config" 파일을 연다.
2. 다음과 같이 작성한다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>


여기서 true로 설정한 useLegacyV2RuntimeActivationPolicy 속성이 CLR version 1.1/2.0 을 사용할 수 있게 해 주는 옵션이다.

LuaInterface는 CLR version 2.0으로 컴파일 되어 있기 때문에 이 옵션을 반드시 활성화 해 줘야 한다.

Posted by 하솔

2011/05/17 14:34 2011/05/17 14:34
, , ,
Response
No Trackback , No Comment
RSS :
http://blog.hasol.net/rss/response/398

warning C4996: was declared deprecated



warning C4996: 'strtok' was declared deprecated


Visual Studio 2005에서 컴파일을 하다보면 위와 같은 경고 문구가 많이 뜬다.
거의 대부분이 예전에 C++ 에서 쓰던 문자, 파일 관련 처리 함수들이다.

내용은 예전에 쓰던 CRT 관련 함수의 안전성을 강화하기 위해서 기존의 함수들은 가급적이면 쓰지 말고,
새로 추가한 함수들을 쓰라는 내용이다.

새로 추가한 함수들은 기존의 함수에 "_s"를 붙이면 된다고 한다.

안전성 측면에서 추가된 내용은 메모리 관련 에러가 뜰 경우에 명확히 표시를 해준다는 점이다.
아마 디버깅 할 때는 도움이 되지 않을까..?

그냥.. 귀찮으면 한방에 해결되는 것이 있다.

#define _CRT_SECURE_NO_DEPRECATE


위의 코드를 추가하면 만사 오케이~

ps) 근데 안되는 건 왜지 ㅡ_ㅡ;;

Posted by 하솔

2006/07/14 15:32 2006/07/14 15:32
Response
No Trackback , No Comment
RSS :
http://blog.hasol.net/rss/response/354

책: Effective C++
주제: C에서 C++로의 전환
항목: #define보다는 const와 inline을 사용한다.


inline 함수에 대해서..

#define을 이용하는 또 다른 하나의 예는 다음과 같이 함수 매크로를 구현하는 경우이다.

#define max(a,b) ((a) > (b) ? (a) : (b))


이와 같이 매크로를 작성할 때는 언제나 매크로 몸체의 모든 인자를 괄호로 묶어야 한다. 그러나 이를 올바르게 적용하더라도 발생할 수 있는 신기한 상황이 존재한다.

int a = 5, b = 0;
max(++a, b); // a가 두 번 증가한다.
max(++a, b+10); // a가 한 번 증가한다.


위와 같은 상황은 inline 함수를 사용함으로써 매크로의 모든 효율성, 모든 예측 동작 및 정규 함수의 타입 안정성을 취할 수 있다.

inline int max(int a, int b) { return a > b ? a : b; };


위의 매크로는 int 타입에 대해서만 적용할 수 있기에, #define을 이용한 경우와 다소 차이가 있다. 그러나 템플릿을 이용하면 문제를 해결할 수 있다.

template<class T>
inline const T& max(const T& a, const T& b)
{ return a > b ? a : b; }

Posted by 하솔

2005/07/18 15:21 2005/07/18 15:21
Response
No Trackback , No Comment
RSS :
http://blog.hasol.net/rss/response/305

책: Effective C++
주제: C에서 C++로의 전환
항목: #define보다는 const와 inline을 사용한다.


전처리기(preprocessor)보다는 컴파일러를 선호하는 경향을 가져야 한다.

#define ASPECT_RATIO 1.653

위의 코드는 전처리기에서 처리하기 때문에 실제 컴파일러는 ASPECT_RATIO를 전혀 알 수 없다. 따라서, 컴파일 시 에러가 발생했을 경우 에러 메세지에 ASPECT_RATIO나 1.653에 대한 언급이 전혀 없기 때문에 혼란을 야기할 수 있다.

따라서, 다음과 같이 상수로 정의하는 것이 좋다.

const double ASPECT_RATIO = 1.653;


상수(const variable)로 정의함으로써 얻어지는 이점은 다음과 같다.

1. 상수 포인터를 정의하기가 까다롭다.
예) const char * 기반의 스트링 정의 시 const를 두 번 사용해야 한다.
cost char * const authorName = "Scott Meyers";


2. 클래스 범위에서의 상수 정의
상수의 영역을 클래스로 제한하기 위해서는 단 한 개의 복사본이 있따는 것을 확신하기 위해 정적(static) 멤버로 만들어야 한다.
class GamePlayer {
private:
static const int NUM_TURNS = 5; // 상수 선언
int scores[NUM_TURNS]; // 상수의 사용
...
};

단, 위에서 보는 코드는 선언(declaration)이지 정의(definition)가 아니다. 즉, 구현 파일에 정적 클래스 멤버를 정의해야 한다.
const int GamePlayer::NUM_TURNS; // 필수적인 정의


만약 위와 같이 안 된다면, 다음과 같이 작성한다.

// in header file;
class EngineeringConstants {
private:
static const double FUDGE_FACTOR;
...
};

// in class implementation file;
const double EngineeringConstants::FUDGE_FACTOR = 1.35;


클래스 내 정수형 클래스 상수에 대해 초기값 지정을 금지하는 컴파일러를 보완하기 위한 일반적인 방법은 enum을 이용하는 것이다.

class GamePlayer {
private:
enum { NUM_TURNS = 5 }; // "the enum hack" - makes
int scores[NUM_TURNS]; // this is fine
};

Posted by 하솔

2005/07/11 15:04 2005/07/11 15:04
Response
3 Trackbacks , 2 Comments
RSS :
http://blog.hasol.net/rss/response/304

불여우(Firefox)를 키워봅시다~ ^-^

트랙백: http://ilmol.zzaru.net/zog/?&no=56


[ 불여우 키우기 ]

다운로드: http://www.mozilla.or.kr/products/firefox/
확장기능: http://update.or.kr/
스킨다운: https://update.mozilla.org/themes/?application=firefox


[ 잡담 ]

태터센터에서 불여우 1.0이 출시되었다는 말과 곳곳에 있는 찬사를 보고서는 나도 한번 불여우를 깔아봤다.
사실 오래 전에 Internet Explorer와는 다른 느낌의 브라우저를 위해서 Netscape를 아주 잠깐 써 보았지만, 당시에는 특별히 IE보다 빠르다는 느낌도 없었으며 IE에 친숙한 나로서는 다소 조잡해 보이는 느낌도 있었다.

1. 빠르다.
불여우를 깔고 나서 첫 느낌은 많이 들어왔던 이야기처럼 '빠르다'라는 것이다. IE에 비해서 로딩 속도가 다소 빠른 느낌이다. 물론 불여우의 용량이 5MB, 그리고 IE는 약 80MB인 걸 감안한다면 앞을 쓸 때의 체감 속도도 아주 많이 다르리라 생각된다.

2. 국내 사이트는 여전히..
사실 국내 사이트에 대해서는 말이 많다. 국내 대부분의 인터넷 이용자가 IE를 이용한다는 사실과 함께(물론 나도 포함) 대부분의 사이트는 HTML 표준이 아닌 ActiveX 도배와 함께 IE에 최적화 된 웹 사이트를 보여준다. 물론 몇 몇 검색 사이트는 이 부분도 많이 고려한 듯..
심지어 국내에서 가장 많이 이용하고 있는 제로보드를 이용한 사이트 마저도 스킨 역시 IE 전용이어서 그런지 깨지는 것을 많이 볼 수 있었다.
일단은 IE 전용이라 깨지는 부분이 많음..
나도 한번쯤 블로그를 돌아보면서 불여우를 고려하여 몇몇 스크립트를 수정해야 할 것 같다. 아쿠아앰프도 그 중 하나.. -_-;

3. 스킨을 비롯한 확장 기능
물론 IE에도 있는 기능이겠지만,
오픈 소스를 바탕으로 하기 때문에 개발자에 의해서 확장 기능이 나올 가능성은 무궁무진하다. 확장기능에 대해서는 위의 링크를 참고하자. 대충 살펴보니 FlashGet을 필요해서 여러 가지 기능을 추가할 수 있다. 한마디로 IE에서 플러그인의 개념인 듯.. 더 써봐야 알겠지만, 플러그인을 많이 설치하면 불여우만의 빠름이 사라지는 일이 발생하지는 않을까..?



괜찮은 브라우저라 생각되기에..
일단은 좀 더 써보자~ ^-^

Posted by 하솔

2004/11/16 08:17 2004/11/16 08:17
Response
No Trackback , 3 Comments
RSS :
http://blog.hasol.net/rss/response/143

편리한 Gmail Notifier (Gmail 알리미)

- Gmail Notifier -

다운로드: http://toolbar.google.com/gmail-helper/index.html

우선 원문을 볼까나..?

The Gmail Notifier is a downloadable Windows application that alerts you when you have new Gmail messages. It displays an icon in your system tray to let you know if you have unread Gmail messages, and shows you their subjects, senders and snippets, all without your having to open a web browser.

The Notifier is in beta. Before you download it, we encourage you to review the system requirements and privacy information.


말 그대로, Gmail 온 내용을 팝업창으로 살짝 알려주는 프로그램이다. Outlook 2003에서 메일이 오면 오른쪽 하단에 살짝 팝업이 뜨는 것과 같은 용도~!

Gmail Notifier는 다음과 같은 기능을 가지고 있다.

1. Automatically check for new messages every two minutes
(새로운 매일이 왔나 매 2분 마다 확인을 한다.)
2. See a snippet of text from up to 30 unread messages
(상위 30개의 읽지 않은 메일을 미리 볼수 있다.)
3. Select a sound to indicate when you have new mail
(새로운 메일이 왔을때 나오는 알림 사운드를 고를수 있다.)
4. Make Gmail your default email application
(Gmail을 기본 메일로 설정한다.)


자. 그럼 테스트를 해 봅시다.
먼저 Gmail Notifier를 설치했습니다.
로그인을 하라는 메세지가 뜹니다.
자동 로그인이 되는지 정확하게 테스트는 하지 않았지만, 패스워드를 저장할 수가 있군요~!
테스트를 위해 메일을 보냈습니다.

사용자 삽입 이미지사용자 삽입 이미지
사용자 삽입 이미지


- 왼쪽 그림: 메일이 오기 전, Tray Icon으로 Gmail Notifier가 작업 표시줄에 떠 있는 모습입니다.
- 오른쪽 그림: 메일이 왔습니다. 봉투 보이시죠~? ^-^?
- 아래 그림: 메일을 받으면 그림과 같이 메일을 보낸 사람, 메일 제목, 메일의 간략한 내용 등을 요약하여 윈도우 화면 상단에 팝업창이 간단하게 뜹니다.

물론 아웃룩을 애용하는 나로서는 아웃룩이 편하지만, 다음, 네이버를 비롯한 POP3를 지원하지 않는 포털 업체라도 이런 것을 제작하면 사용자가 좀 더 편리하지 않을까..?

Posted by 하솔

2004/08/28 05:13 2004/08/28 05:13
Response
A trackback , 2 Comments
RSS :
http://blog.hasol.net/rss/response/53

영역 클리핑(Clipping) 하기..

[ 영역 클리핑 하기 ]
DC에서 그리는 영역을 알아서 잘라주는 것을 말함.

MSDN 참고할 것~!

CDC::SelectClipRgn

int SelectClipRgn(CRgn* pRgn, int nMode);

1. 우선 CRgn을 이용해서 영역을 설정한다.
CRgn rgn;
rgn.CreateRectRgn(0,0,100,100);

2. DC에서 영역 클리핑
pdc.SelectClipRgn(&rgn);

3. 클리핑을 초기 상태로 돌릴려면?
pdc.SelectClipRgn(NULL); // NULL로 하면 됌;

Posted by 하솔

2004/06/19 22:43 2004/06/19 22:43
Response
No Trackback , No Comment
RSS :
http://blog.hasol.net/rss/response/7


블로그 이미지

스스로의 경제학..

- 하솔

Notices

Archives

Authors

  1. 하솔

Calendar

«   2013/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Site Stats

Total hits:
214242
Today:
84
Yesterday:
110