2007. 2. 6. 18:45
Language/Python
SWIG 사용하기 위한 절차에서 C++ 컴파일을 이용한 build를 하게되면 아래와 같은 에러 발생하게 된다.
C:\Program Files\MinGW\bin\g++.exe -mno-cygwin -mdll -static --entry _DllMain@12
--output-lib build\temp.win32-2.4\Release\lib_example.a --def build\temp.win32-
2.4\Release\_example.def -s build\temp.win32-2.4\Release\example_wrap.o -LC:\Pyt
hon24\libs -LC:\Python24\PCBuild -lpython24 -lmsvcr71 -o build\lib.win32-2.4\_ex
ample.pyd
g++: build\temp.win32-2.4\Release\lib_example.a: No such file or directory
error: command 'g++' failed with exit status 1
--output-lib build\temp.win32-2.4\Release\lib_example.a --def build\temp.win32-
2.4\Release\_example.def -s build\temp.win32-2.4\Release\example_wrap.o -LC:\Pyt
hon24\libs -LC:\Python24\PCBuild -lpython24 -lmsvcr71 -o build\lib.win32-2.4\_ex
ample.pyd
g++: build\temp.win32-2.4\Release\lib_example.a: No such file or directory
error: command 'g++' failed with exit status 1
이런 에러를 막기 위해서는 C:\Python24\Lib\distutils\cygwinccompiler.py 파일의 아래 부분을 수정하면 된다.
# dllwrap uses different options than gcc/ld
if self.linker_dll == "dllwrap":
extra_preargs.extend(["--output-lib", lib_file])
# for dllwrap we have to use a special option
extra_preargs.extend(["--def", def_file])
if self.linker_dll == "dllwrap":
extra_preargs.extend(["--output-lib", lib_file])
# for dllwrap we have to use a special option
extra_preargs.extend(["--def", def_file])
위 빨간색 부분을 주석 처리하면 에러를 제거시킬 수 있다.