http://www.winapi.co.kr/ApiBoard/tbltip/How%20DLL%20Works.pdf
간단한 설명!
명쾌하다.
위의 링크의 내용을 간추리면.. 아래로...
-----------------------
dlltest.c
__declspec(dllexport) char *str = "THE TRUTH IS OUT THERE";
__declspec(dllexport) int add(int a, int b)
{
return a + b;
}
// c에선 extern "C" 하면 왠지 안된다.. (원인은 해석하기 귀찮아서 pass, 할필요가 ㅇ벗는데 써서 에러내는건가?)
// cpp에서 만든걸 c에서 쓰게 하려면 extern "C"꼭 필요하다...
빌드하면 dlltest.dll이 되것지?
// implicit 한 방법. (explicit는 링크의 문서를 읽어보시라)
// main program에서는 dll과 함께 생성되는 lib파일과 헤더 선언이 필요하다.
test.h
extern "C" __declspec(dllimport) char *str;
extern "C" __declspec(dllimport) int add(int a, int b);
// C가 만든 외부 dll에 함수와 변수가 있도다.
test.cpp(c)
#include "test.h" // 요렇게 extern 선언 필요
#pragma comment(lib, "dlltest.lib")
int main()
{
printf("%s\n",str);
printf("%d + %d = %d\n",1,2,add(1,2));
}
결과
THE TRUTH IS OUT THERE
1 + 2 = 3
press any key.
'Programmer > 기초' 카테고리의 다른 글
little endian과 big endian (0) | 2007.12.14 |
---|---|
infinite number의 정의 (0) | 2007.12.14 |