^^ ¾ð¾î°ü·Ã ^^

    1  2  3  4  5  6  7  8  9  10 .. 44    ·Î±×ÀÎ  °¡ÀÔ
[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
ºÐ·ù
¹øÈ£ Á¦¸ñ ³¯Â¥À̸§Ãßõº¸±â
435  Â¯Å¥ ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.156  2010.06.02 µ¿ÀÌ18112
434  ºòÆÄÀÏ ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.155  2010.06.02 µ¿ÀÌ18103
433  ¿¥ÆÄÀÏ ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.153  2010.06.02 µ¿ÀÌ13215
432  À¥µ¿ÀÚ¹«·á´Ù¿î»çÀÌÆ®Ãßõ ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.152  2010.06.02 µ¿ÀÌ9211
431  ¿£µ¹ÇÉ È¨ÆäÀÌÁö ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.151  2010.06.02 µ¿ÀÌ10222
430  µð½ºÅ©½ºÅ丮 ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.149  2010.06.02 µ¿ÀÌ11248
429  ÅäÅäºê¶ó¿ìÀú ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.148  2010.06.02 µ¿ÀÌ14331
428  Æ¼Çà ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.147  2010.06.02 µ¿ÀÌ1369
427  °×Çà ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.146  2010.06.02 µ¿ÀÌ11187
426  ÄÉÀ̵ð½ºÅ© ¡Ü¦¡¦¡¦¡¹«-·áÀÌ¿ë±Ç¢¾¢¾ÁÖ¼Ò¦¡¦¡¦¡¡ÜNo.145  2010.06.02 µ¿ÀÌ11224
Copyright 1999-2012 Zeroboard / skin by SIRINI