VisualStudio 에서 만든 .lib파일을 mingw에서 사용시 Warning: .drectve 오류
글쓴이: rlj1202 / 작성시간: 토, 2017/09/30 - 2:36오후
PortableDeviceApi.h 와 PortableDevice.h 헤더파일에는 visual c++ 컴파일러만 인식하는 메크로 (/##/ 같은?) 등이 있어서 gcc에서는 사용이 불가하다고 하여 비주얼 스튜디오 에서 lib형태로 만들어서 가져온 뒤 사용해보기로 했습니다.
제작한 lib을 사용하려고 하면 다음과 같은 오류를 내놓습니다.
# command-line-arguments Warning: .drectve `/FAILIFMISMATCH:"_CRT_STDIO_ISO_WIDE_SPECIFIERS=0" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized # command-line-arguments Warning: .drectve `/FAILIFMISMATCH:"_CRT_STDIO_ISO_WIDE_SPECIFIERS=0" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
인터넷 검색 결과 비주얼 스튜디오에서 #pragma comment(linker, "/DEFAULTLIB: uuid.lib")
같은걸 임의로 추가한다고 하는데 이는 또 visual c++ 링커만 알아듣는 거라고 하네요. /NODEFAULTLIB
이라는 옵션을 주었슴에도 같은 오류가 계속 발생해서 질문 드립니다.
WindowsSDK에 있는걸 쓰려면 마소의 굴레에서 벗어날 수 없는건가요...!
Forums:
참고해보세요.
//
원하시는 내용은 구글과 네이버에서 검색해보니. 여러가지 컴파일 하는 방법이 있었습니다.
vs lib mingw compile
PortableDeviceApi.h
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
Warning: .drectve `/FAILIFMISMATCH:"_CRT_STDIO_ISO_WIDE_SPECIFIERS=0" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
//
MSC_VER 확인
예전. 플랫폼 SDK 사용 가능한지 확인
윈도우7 8 10 SDK 확인
각 DLL 과 LIB 와 Header 확인 (컴파일 할때. lib 와 header 파일의 폴더경로. 참조 순서'도 중요합니다.)
되도록이면. 잘 되는 예제를 사용하시면 성공하기 좋습니다.
컴파일에 성공했다고 하더라도. 오류가 발생할 수 있으니 주의해야 합니다.
운영체제를 2가지 모두 사용하는 방법도 있습니다. (VirtualBox 나 원격 PC 등등...)
데브피아'에도 문의 해보세요.
//
이거로 찾아보니. DevC++과 CodeBlock 등에 내용이 보입니다. 별 내용은 안보이네요.
.drectve
drectve unrecognized
//
CMake 프로그램을 사용하시면. 리눅스 소스를 윈도우에서 컴파일 하기 편하게 프로젝트 파일을 생성해주기도 합니다.
//
다른 방법이 있다면... 컴파일 안하고. 되있는거. 통신으로 편하게 해도 됩니다.
윈도우 WMI 서비스에 기능을 VBScript 등으로 제어할 수 있습니다.
ActiveX OCX 파일로 생성해서 MFC 나 VB 혹은 IE. Javascript 등에서 사용이 가능합니다.
Qt 에서도 OCX 파일을 붙여서 사용할 수 있을 겁니다. 요즘은 QML이 여러가지 면에서 인기입니다.
regsvr32 와 regasm 등에 사용 방식이 다를 수 있으니. 확인이 필요합니다.
Qt 에서도 msvc 로 컴파일이 가능합니다.
VC 의 컴파일러 버전. DLL과 Lib 종류. 정적. 동적. x86. x64. 윈도우 버전. 멀티스레드. 디버그. 릴리즈. 등을 확인해보시기 바랍니다.
.exe 프로세스 파일로 생성해서 도스 명령어 인자값으로 사용이 가능합니다.
IPC 및 데이터 통신으로 사용이 가능합니다.
C 와 C++ 의 extern 사용방식을 확인해보시기 바랍니다.
C 와 Java 를 서로 모듈로 사용해 볼 수 있습니다.
flash 와 flex 등을 활용하는 방법도 있습니다.
Cygwin 등을 활용하는 방법도 있습니다.
//
네이트온'으로 문의 주시면. 원격 제어로 확인해드릴 수 는 있습니다.
shintx@nate.com
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
Warning은 경고입니다. 오류(Error)는
Warning은 경고입니다. 오류(Error)는 아닙니다.
그래서 링크가 실패하셨나요? exe 파일의 동작이 이상한가요?
나름쓸만하다고 생각하면 경고는 무시할 수도 있습니다.(이건 다르게 생각하시는 분도 계실것 같습니다만..)
Process finished with exit
Process finished with exit code -1073741819 (0xC0000005)
이런 오류를 뿜고 종료되었습니다.
http://blog.tcltk.co.kr/?p
http://blog.tcltk.co.kr/?p=1269
여기보시면 vc용 lib를 gcc용 def랑 a파일로 변환하는 법이 있네요
댓글 달기