* 지난글에 답글달아주신 송신영님 감사합니다.
c++로 메일송신하는게 참...-_-...보내는거까지 했더니 결국 영어아니면 글자가 다 깨저서 그거까지 일일이 만들바에는 걍 c#으로 메일송신 프로그램 만들어서 c++에서 불러다 쓰는게 10배는 빠를 것 같아 시도중입니다.
아무튼 연습용으로 인터넷 검색하면서 c#프로그램을 만들고 COM참조가능으로 설정 한 후 컴파일해서 dll파일을 만들었습니다.
dll파일을 regasm을 이용해서 tlb파일을 얻었구요.
그 다음 이 dll파일과 tlb파일을 c++프로젝트 폴더에 두고, c++ 소스에서 import "SendMail.tlb"를 적고 빌드를 실행했더니
Debug폴더에 SendMail.tlh & tli파일이 생겼습니다.
여기까진 잘 되는 것 같았는데요...
c++에서 CoCreateInstance 라는걸 해야하는 것 같은데...여기에서 에러가 납니다.
먼저 c#프로그램의 소스입니다.
using System.Runtime.InteropServices;
namespace SendMail
{
[Guid("A5A420C2-F419-4063-B9A8-FC45737A2B37")]
public interface MailInterface
{
int add(int a, int b);
}
[Guid("FC979228-1F8B-4D04-8CD8-546B0B64E616")]
public class MailCtrl : MailInterface
{
public int add(int a, int b)
{
return a + b;
}
}
}
그리고 c++의 헤더와 cpp파일의 소스입니다.
#include "stdafx.h"
struct MailInterface;
class Mail
{
public:
Mail(void);
~Mail(void);
int add(int a, int b);
private:
MailInterface *mailInter;
};
#include "stdafx.h"
#include "Mail.h"
#include
#include
#include
#import "SendMail.tlb" no_namespace named_guids
using namespace std;
Mail::Mail(void)
{
}
Mail::~Mail(void)
{
}
int Mail::SendMail()
{
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_MailCtrl,
NULL,
CLSCTX_INPROC_SERVER,
IID_MailInterface,
reinterpret_cast(&mailInter));
}
에러가 나는곳은 마지막 소스의 CLSID_MailCtrl와 IID_MailInterface입니다.
SendMail.tlh파일을 열어보니까 아래와 같은 내용이 있었기 떄문에...맞게 적은 것 같은데..
// Named GUID constants initializations
//
extern "C" const GUID __declspec(selectany) LIBID_SendMail =
{0xc4404f0c,0x77ca,0x4a20,{0x92,0x09,0x3f,0x86,0x1a,0x70,0x68,0xde}};
extern "C" const GUID __declspec(selectany) IID_MailInterface =
{0xa5a420c2,0xf419,0x4063,{0xb9,0xa8,0xfc,0x45,0x73,0x7a,0x2b,0x37}};
extern "C" const GUID __declspec(selectany) CLSID_MailCtrl =
{0xfc979228,0x1f8b,0x4d04,{0x8c,0xd8,0x54,0x6b,0x0b,0x64,0xe6,0x16}};
extern "C" const GUID __declspec(selectany) IID__MailCtrl =
{0x25109ceb,0xbac9,0x378f,{0xbc,0xad,0x5b,0x2c,0xe3,0xd8,0x3f,0xa5}};
참고하고 있는 사이트들과 같게 쓴 것 같은데 왜 에러가 나는지 잘 모르겠습니다...
도움좀 주실 수 있으면 감사하겠습니다.
참고사이트
http://silverlab.tistory.com/12
http://tiger5net.egloos.com/5510639