|
·Î±×ÀÎ
°¡ÀÔ
|
| [c++] GCC¸¦ ÀÌ¿ëÇÑ ÄÄÆÄÀÏ & ½ÇÇàÆÄÀÏ »ý¼º | |
| ÀÌ ¸§ | ÇÏ´ë¼ö |
| ³¯ Â¥ | 2005-11-16 11:39:56 |
| Á¶ ȸ | 257(Ãßõ : 2) |
| Æ®·¢¹é | http://gohds.ooci.net/zboard/skin/sirini_ezset_fullpack/ezset_catch_trackback.php?id=aStudy02&no=29 |
| ±ÛÀÚÅ©±â | ![]() |
|
[c++] GCC¸¦ ÀÌ¿ëÇÑ ÄÄÆÄÀÏ & ½ÇÇàÆÄÀÏ »ý¼º
*¼³¸í ÄÜ¼Ö ÇÁ·Î±×·¥ ÀÛ¼ºÇϱ⠴ÙÀ½Àº °£´ÜÇÑ C ÇÁ·Î±×·¥À» À§ÇÑ ¿¹Á¦ ÄÚµåÀÌ´Ù. ´ÙÀ½ ³»¿ëÀÇ ÆÄÀÏÀ» ÀÛ¼ºÇϰí hello.c¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #include <stdio.h> int main(int argc, char **argv) { printf ("Hello\n"); return (0); } Hello.c¶ó´Â ÄÚµå ÆÄÀϷκÎÅÍ ¸¸ÀÏ ÄÜ¼Ö ¸ðµå¿¡¼ ½ÇÇà °¡´ÉÇÑ ½ÇÇàÆÄÀÏÀ» »ý¼ºÇÏ°í ½ÍÀ¸¸é ´ÙÀ½°ú °°ÀÌ Ç϶ó. ÀÌ·¸°Ô Çϸé ÄÄÆÄÀϰú ¸µÅ©°¡ ÇÑ ¹ø¿¡ ÀÌ·ç¾îÁø´Ù. gcc -o hello hello.c ȤÀº hello.o¶ó´Â ¿ÀºêÁ§Æ® ÆÄÀÏÀ» »ý¼ºÇϰí, ÀÌ ¿ÀºêÁ§Æ® ÆÄÀϷκÎÅÍ Äָܼðµå ½ÇÇà ÆÄÀÏÀ» »ý¼ºÇÏ°í ½ÍÀ¸¸é ´ÙÀ½°ú °°ÀÌ Ç϶ó. gcc -c hello.c gcc -o hello hello.o ù¹øÂ° ¸í·ÉÀº ÄÄÆÄÀÏ ´Ü°è·Î hello.c·ÎºÎÅÍ hello.o¶ó´Â ¿ÀºêÄÊÆ® ÆÄÀÏÀÌ »ý¼ºµÇ¸ç, ÀÌ·¸°Ô »ý¼ºµÈ hello.o´Â libc¶ó´Â À̸§ÀÇ ¿ÀºêÁ§Åä ÆÄÀϰú ÇÔ²² ¸µÅ©°úÁ¤À» °ÅÃÄ hello.exe°¡ »ý¼ºµÈ´Ù. ´ÙÀ½Àº °£´ÜÇÑ C++ ÇÁ·Î±×·¥À» À§ÇÑ »ùÇà ÄÚµåÀÌ´Ù. ³»¿ëÀ» ÀÛ¼ºÇÏ¿© hello.cpp¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #include <iostream> int main(int argc, char **argv) { std::cout << "Hello" << std::endl; return (0); } C++ ÇÁ·Î±×·¥ ½ÇÇàÆÄÀÏÀ» »ý¼ºÇϱâ À§Çؼ ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀϰú ¸µÅ©¸¦ ¼öÇàÇ϶ó. g++ -c hello.cpp g++ -o hello hello.o À©µµ¿ìÁî ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¼ºÇϱ⠴ÙÀ½Àº À©µµ¿ìÁî ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§ÇÑ »ùÇà ÄÚµåÀÌ´Ù. hello.c¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #include <windows.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, "Hello", "Hello Demo", MB_OK); return (0); } ¸¸¾à ½ÇÇà°¡´ÉÇÑ hello.exe À©µµ¿ì¸¦ »ý¼ºÇÏ°í ½ÍÀ¸¸é hello.c¶ó´Â c ÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇÑ´Ù. gcc -c hello.c ÀÌ ¸í·ÉÀº hello.c¸¦ ¸ñÀûÆÄÀÏ hello.oÀ» »ý¼ºÇÏ´Â ÄÄÆÄÀÏ ¸í·ÉÀÌ´Ù. gcc -o hello hello.o -mwindows ÀÌ ¸í·ÉÀº hello.o·ÎºÎÅÍ ½ÇÇàÆÄÀÏ hello.exe¸¦ »ý¼ºÇÑ´Ù. -mwindows ½ºÀ§Ä¡´Â ÄÜ¼Ö ÇÁ·Î±×·¥ ´ë½Å À©µµ¿ìÁî ½ÇÇàÆÄÀÏÀ» »ý¼ºÇϴµ¥ ÇÊ¿äÇÏ´Ù. ÀÌ ½ºÀ§Ä¡´Â Àû´çÇÑ À©µµ¿ìÁî ¶óÀ̺귯¸®°¡ ¸µÅ©µÉ ¼ö ÀÖ°Ô ÇÑ´Ù. Ç¥ÁØ À©µµ¿ìÁî ÀÀ¿ëÇÁ·Î±×·¥°ú ÇÔ²² ÄÜ¼Ö È¸éÀ» ¾ò±â À§Çؼ´Â -mwindows ¿Ü¿¡ -mconsole Ç÷¡±×¸¦ Ãß°¡Ç϶ó. ¸¸ÀÏ ½ÇÇà ÇÁ·Î±×·¥¿¡ Ãß°¡µÇ¾î¾ß ÇÒ ¸®¼Ò½º ÆÄÀÏÀÌ ÀÖ´Ù¸é, ¿©·¯ºÐµéÀº ¼Ò½º ÆÄÀÏ »Ó¸¸ ¾Æ´Ï¶ó ¸®¼Ò½º ÆÄÀϵµ ÄÄÆÄÀÏÇÏ°í ½ÇÇà ÇÁ·Î±×·¥ÀÌ »ý¼ºµÇ±â À§ÇØ ¸µÅ©µÉ ¶§ ÄÄÆÄÀÏµÈ ¸®¼Ò½ºµéÀ» Æ÷ÇÔÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â resfile.rc¶ó´Â À̸§ÀÇ ¸®¼Ò½º ÆÄÀÏÀ» ¾î¶»°Ô ÄÄÆÄÀÏÇÏ°í ¸µÅ©ÇÏ´ÂÁö º¸¿©ÁÖ°í ÀÖ´Ù. windres -o resfile.o resfile.rc gcc -o hello hello.o resfile.o -mwindows DLL ¸¸µé±â ´ÙÀ½ ¿¹Á¦ ¼Ò½º Äڵ带 dllfct.h¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #ifdef BUILD_DLL // the dll exports #define EXPORT __declspec(dllexport) #else // the exe imports #define EXPORT __declspec(dllimport) #endif // function to be imported/exported EXPORT void tstfunc (void); ±×¸®°í ´ÙÀ½ ¼Ò½º Äڵ带 dllfct.c¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #include <stdio.h> #include "dllfct.h" EXPORT void tstfunc (void) { printf ("Hello\n"); } ±×¸®°í ¸¶Áö¸·À¸·Î ´ÙÀ½ ¼Ò½º Äڵ带 hello.c¶ó´Â À̸§À¸·Î ÀúÀåÇ϶ó. #include "dllfct.h" int main () { tstfunc (); return (0); } DLLÀ» »ý¼ºÇϰí ÀÌ DLLÀ» »ç¿ëÇÏ´Â ½ÇÇà ÆÄÀÏÀ» ¸¸µé·Á¸é ´ÙÀ½ ¸í·É¾î¸¦ ¼öÇàÇÑ´Ù. gcc -c hello.c gcc -c -DBUILD_DLL dllfct.c dllwrap --output-lib=libtstdll.a --dllname=tst.dll --driver-name=gcc dllfct.o gcc -o hello.exe hello.o -L./ -ltstdll DLL¿¡ °üÇÑ ´õ ¸¹Àº Á¤º¸´Â ´ÙÀ½ URLÀ» ÂüÁ¶Ç϶ó. http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html ¡¡ |
|
|
gkeotn
|
|
|
|
|
ºÐ·ù
|
|
| Copyright 1999-2012 Zeroboard / skin by SIRINI |