c++ lib 를 c# 에서 사용하기 (c++/cli)
이번에 파티클 에디터를 만들면서 mfc 말고 c# 을 사용해보았는데 c# 문법에 대한 자료는 많지만,
c++ lib 를 c# 에서 사용하는 방법에 대해 자세히 나온곳이 없어서 간단하게 정리해보았습니다.
작업순서는
1) c++ 로 lib 작성 (lib)
2) c++/cli 로 wrapper 를 만들고 (dll)
3) c# 에서 wrapper dll 를 호출해서 작업을 하게됩니다.
직접 해보자면
1) c++ 로 lib 를 하나 만듭니다. 저는 간단하게 다음과 같은 class 를 만들었습니다.
class cppLib
{
public :
int addValue( int value1, int value2 )
{
return ( value1 + value2 );
}
namespace cliWrap
{
public ref class cppLibWrap
{
protected :
cppLib * m_pCppLib;
public :
cppLibWrap();
virtual ~cppLibWrap();
int addValue( int value1, int value2 );
};
} // namespace - cliWrap
[ source ]
namespace cliWrap
{
cppLibWrap::cppLibWrap() : m_pCppLib( new cppLib )
{}
cppLibWrap::~cppLibWrap()
{
if( m_pCppLib )
{
delete m_pCppLib;
m_pCppLib = 0;
}
}
//////////////////////////////////////////////////////////
int cppLibWrap::addValue( int value1, int value2 )
{
return m_pCppLib->addValue( value1, value2 );
}
} // namespace - cliWrap
3) wrapper class 작성이 끝났으면 c# 으로 프로젝트를 만듭니다.
c# 프로젝트 생성후에 위에서 작업한 2개의 프로젝트를 추가시켜줍니다.
wrapper class 쪽에서 만들어지는 dll 을 c# 에서 사용하게 되는데 매번 변경사항이
있을때마다 복사하기가 번거롭기 때문에 빌드시마다 자동으로 복사해주는 작업을 해줍시다.
Command Line 에 copy "$(TargetPath)" "$(SolutionDir)\simpleProject\$(TargetFileName)" 를
자신의 프로젝트 폴더에 맞게 적당히 수정해서 적어줍니다.
그 후에 dll 복사를 위해 wrapper 프로젝트를 다시 빌드해줍니다.
이제 c# 프로젝트에 c++/cli 로 만든 dll 을 붙여줍니다.
아까 만든 wrapper class dll 을 추가시켜줍니다.
이제 작업이 끝났습니다.
c# 프로젝트에서는 다음과 같이 그냥 사용하시면 됩니다.
namespace simpleProject
{
public partial class Form1 : Form
{
private cliWrap.cppLibWrap m_cppLibWrap = null;
public Form1()
{
InitializeComponent();
m_cppLibWrap = new cliWrap.cppLibWrap();
int returnValue = m_cppLibWrap.addValue(1, 2);
MessageBox.Show(returnValue.ToString());
}
}
}
[출처] c++ lib 를 c# 에서 사용하기 (c++/cli)|작성자 휠쓰
'Programming > C++/CLI' 카테고리의 다른 글
expert_cppcli_.net_for_visual_cpp_programmers.pdf (0) | 2010.05.24 |
---|---|
wrapping 자동화 관련.. (0) | 2010.05.24 |
C++/CLI Quick Referrence (0) | 2010.05.24 |
C++/CLI 학습을 위한 링크 모음 (0) | 2010.05.17 |
[펌] C++로 만든 라이브러리를 C#에서 사용하기 (0) | 2010.05.17 |