본문 바로가기

쓰기

MFC를 그대로 써야하는지라
API용의 기본틀을 쓸순 없어서 새로 만들었는데,

extern "C" __declspec(dllexport) BOOL __stdcall OnPluginInit(HWND hSettingWnd, LPSTR cszSettingStringBuffer);
extern "C" __declspec(dllexport) BOOL __stdcall OnPluginOption();
extern "C" __declspec(dllexport) BOOL __stdcall OnPluginClose();
extern "C" __declspec(dllexport) BOOL __stdcall Translate(LPCSTR cszJapanese, LPSTR szKorean, int nBufSize);

이게 ezTransXP 플러그인 소스 헤더에서 함수 규격과 관련된 유일한 부분

그래서

extern "C" __declspec(dllexport) BOOL __stdcall OnPluginInit(HWND hSettingWnd, LPSTR cszSettingStringBuffer);
extern "C" __declspec(dllexport) BOOL __stdcall OnPluginOption();
extern "C" __declspec(dllexport) BOOL __stdcall OnPluginClose();
extern "C" __declspec(dllexport) BOOL __stdcall PreTranslate(LPCSTR cszInJapanese, LPSTR szOutJapanese, int nBufSize);
extern "C" __declspec(dllexport) BOOL __stdcall PostTranslate(LPCSTR cszInKorean, LPSTR szOutKorean, int nBufSize);
extern "C" __declspec(dllexport) const ATPLUGIN_VERSION * __stdcall OnPluginVersion();

요~렇게 대충 흉내를 내줬는데,
기본 함수가 로드 되지 않았다면서 안되더군요;;;

그래서
ATPlugin에서
#pragma comment(linker, "/EXPORT:OnPluginInit=_OnPluginInit@8")
#pragma comment(linker, "/EXPORT:OnPluginOption=_OnPluginOption@0")
#pragma comment(linker, "/EXPORT:OnPluginClose=_OnPluginClose@0")
#pragma comment(linker, "/EXPORT:OnPluginVersion=_OnPluginVersion@0")
#pragma comment(linker, "/EXPORT:PreTranslate=_PreTranslate@12")
#pragma comment(linker, "/EXPORT:PostTranslate=_PostTranslate@12")
이부분을 추가해 주니까 잘 되더라구요


저 아래쪽이 이지트랜스에는 없어도 돌아가는데,
새로 만든 녀석에는 왜 저게 있어야 돌앙가는거죠?
분류 :
Talk
조회 수 :
8374
등록일 :
2008.08.09
12:28:01
엮인글 :
https://arallab.hided.net/3593/deb/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3593

whoami

2008.08.09
13:12:25

함수 익스포트에는 여러가지 방법이 있는데요, 그냥 __declspec(dllexport) 로 익스포트를 하면 함수 이름이 그냥 쓰여지지 않고 특정 법칙에 의거하여 쓰여집니다. 예를 들면 OnPluginInit 라는 함수는_OnPluginInit@8 이라는 이름으로 익스포트되지요.

그것을 OnPluginInit 라는 이름으로 고쳐주는 것이 저 #pragma comment 세트입니다. 사실 저것보다는 .def 파일을 통해 고쳐주는 것이 좀 더 일반화 된 방법인데요 (ezTransXP 플러그인 소스 내에 ezTransXP.def 파일을 참조하세요), 플러그인 프레임워크에서는 사용자가 원하는 방식의 플러그인을 만들기 위해 동적으로 익스포트할 필요가 있어 #pragma comment 방법을 쓰는 것입니다. .def 파일을 통한 방법은 고정되어 있기 때문에 반드시 적혀있는 모든 함수를 익스포트해야 하거든요.

참고링크.
DLL 에서 내보내기(익스포트) http://msdn.microsoft.com/ko-kr/library/z4zxe9k8(VS.80).aspx
데코레이팅된 이름 http://msdn.microsoft.com/ko-kr/library/56h2zst2(VS.80).aspx
링커 옵션 /EXPORT http://msdn.microsoft.com/ko-kr/library/7k30y2k5(VS.80).aspx

Hide_D

2008.08.09
13:37:46
ezTransXP.def가 있었군요[...]

Hide_D

2008.08.09
13:44:06
ezTransXP.def는 그냥 12345 해놨던데
그냥 막 정해도 되나요?
0은 안되는 것 같던데

whoami

2008.08.09
13:59:15

순서 (@1 같은) 말인가요? 상관 없습니다. 단지 Dependency Walker 같은 것으로 봤을 때 순서대로 하면 좀 더 예쁘다는 것 정도? ㅡ.ㅡ

농담이고요; 사실 번호로 함수 불러오기 할 게 아니면 번호는 신경 안 써도 됩니다.

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
89 Talk ats파일에 아이콘을... [2] Hide_D 15493   2009-12-23 2009-12-23 14:27
역시 ats에 아이콘을 넣는 게 좋을 것 같습니다. 그래서 생각해본 방법 1. xml에 <icon></icon>항목을 추가해서 추가할 ico 파일을 변환해서 넣기 0xff -> 'FF' 식으로 하면 실제 ico 파일에 대해서 대략 용량이 2배가 되겠지만 '별 수 없죠' 2. ats에 대한 Ic...  
88 OtherFiles 0.3 설정 xml 파일 예제 [4] file 아랄 15532   2009-09-20 2009-09-21 00:12
 
87 Archive [플러그인,소스] KoFilter 테스트 버전 20081118 file whoami 15552   2008-11-18 2008-11-18 23:37
 
86 Talk [버그 보고?]브라반 드디어 원인을 찾았습니다. orz [6] Hide_D 15593   2008-07-08 2008-07-09 16:23
엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉 0x3010 0x3011이용해서 대사 처리하는 녀석들을 찾아보았더니 http://aralgood.com/zbxe/26860 루이는 토모를 부른다. 가 있더군요. 요건 그 일부분! ------------------------------------------------------...  
85 OtherFiles 히데님, 픽스라인 관련 메모장 파일입니다. [1] file astral 15603   2008-12-16 2008-12-16 01:19
 
84 Talk 문자열 길이에 대한 건의 file G2m 15608   2010-01-21 2010-01-21 18:44
 
83 Talk XML 파싱 부분에 문제가 하나 있네요. Hide_D 15772   2009-12-30 2009-12-30 21:42
xml 태그에서 그 태그에 대한 내용이 없을경우 <tag></tag> 로도 표현할 수 있지만 <tag/> 로도 표현 가능합니다. 현재 파서 부분을 보니 <tag/>형식의 태그에는 대응이 되어 있지 않은것 같습니다.  
82 Talk FixLine 23일자 파일은 무시설정에 문제가 있는듯하네요 [7] 류제로 15841   2008-12-26 2008-12-30 08:30
이번에 올라온 종말능의를 코드를 입력시켜면서 알게된 것인데 23일자 FixLine 옵션의 무시설정의 서클체크을 사용안함 이외 부분을 체크하고 확인을 누르면 적용은 되는듯하나 다시 옵션창을 열어보면 체크가 사용 안함으로 표시 되어있습니다 20일자로 실행...  
81 Talk 2등 ~ [3] 앙마vv 15977   2008-07-08 2008-09-17 00:31
2등 입니다 ㅋㅋㅋㅋ ........... 뭐... 뭐 어쩌라는거지 .......... 그나저나 이곳 뭐하는곳 ??????? ㄷㄷㄷ;;  
80 Talk 브라반 대체 뭐가 문제인걸까요 orz Hide_D 15988   2008-07-08 2008-07-08 13:54
추출된 스크립트도 문제가 없고 소스를 분석해봐도 문제는 없는데 =ㅅ=;;;  
79 Archive [버그 수정?]기리기리 이름 버그 수정 파일 [20080709 수정] [6] file Hide_D 16005   2008-07-08 2008-07-19 03:24
 
78 OtherFiles fixline 테스트 3차 [2] file 처음처럼만 16074   2008-12-16 2008-12-30 08:53
 
77 Talk 0.2, 0.3에서 메모리 덮어쓰기 모드의 차이점 [2] file Hide_D 16109   2009-12-20 2009-12-20 21:14
 
76 Talk [Skin] 0.3버전용 폴라리스 공식 스킨(한글)을 만드려고 합니다. [8] 아랄 16143   2009-12-23 2009-12-23 23:58
AralTrans 0.3 버전용 폴라리스 공식 스킨을 만드려고 합니다. 한글 기반이구요. 현재 Default 스킨을 어떻게 변화시키면 좋을지 의견 부탁드립니다.  
75 Talk 0.2 & 0.3 번역플러그 기호 출력문제 [1] file 류제로 16290   2009-12-21 2009-12-22 11:33
 
74 Archive [소스] CustomDic v4 20110104 테스트버전 [3] file Hide_D 16410   2011-01-04 2011-01-05 06:00
 
73 Archive FixLine v2 20090404_2 RC2 [2] file Hide_D 16439   2009-04-04 2009-04-05 03:47
 
72 Archive [플러그인, 소스] FixLine 테스트 버전 Archive2(09.14 12:49갱신) [1] file Hide_D 16618   2008-09-12 2009-01-06 01:57
 
71 Talk ATCode에 @가 붙은 글꼴을 빼버려야겠군요 Hide_D 16792   2010-12-11 2010-12-11 16:28
질문 게시판에 백년 만년 올라오는 왜 글자가 옆으로 누워있죠? 를 막으려면 역시 @붙은 글꼴은 빼는게 제격입니다 ㅠ 대신 아래에 체크로 @ 허용 같은거 하나 만들어두고요  
70 Archive [플러그인, 소스] MultiPlugin 20080713 file whoami 16861   2008-07-13 2009-01-06 01:00