mingw vs msvc

qkrtntjd의 이미지

.lib을 추가하여 qt에서 어떤 소스를 돌려봐야합니다..
소스는 c++로 작성되있습니다.

qt에서 라이브러리를 추가하여 라스코니님 말씀대로 msvc계열(64bit msvc2013) 컴파일러로 돌려보니 잘 돌아갑니다
그런데 mingw(32bit)로 돌려보려고 하면 돌아가지를 않네요
이해가 부족하기는 한데 다른 것은가만히 두고 컴파일러만 교체하여 컴파일하려고 하면 원래 안되나요?
호환성이 mingw>msvc 라고 생각하고 있는데 에러가 undefined reference to '___imp__zn18viconstream....ev'라고 뜹니다.

같은 소스를 가지고 msvc로 돌아가는 코드가 mingw로 돌리면 돌아가기는 하는지 여쭤보고싶습니다.
자세한 설명 해주실 수 있으시면 부탁드립니다..

익명 사용자의 이미지

소스코드 -> (컴파일러) -> 중간코드 -> (링커) -> 실행코드
컴파일러가 다르면 중간코드가 달라집니다.
다른 종류의 중간코드가 들어오면 해석을 못해서 실행코드도 안만들어지죠.

mingw는 gcc 기반이고, msvc는 cl 기반이라서, 서로 호환성이 있거나 그러지 않습니다. 잘못알고 계신겁니다.

qkrtntjd의 이미지

제가 생각하는건 소스코드가 c++로 되있으니 msvc로 컴파일이 됐습니다
같은 소스코드를 mingw로 컴파일하면 왜 안되는가가 궁금합니다
다시말해서 같은 코드를 msvc로 하면 실행파일이 만들어지는데 mingw로는 실행파일이 안만들어진다(에러가 난다) 정도로 요약할 수 있겠네요..
같은 c++인데 왜 문제가 되는지 궁금합니다

익명 사용자의 이미지

lib가 mingw용이 아니니까요.
def 추출해서 lib를 mingw용으로 만들던가, lib 소스를 다시 빌드해야합니다.

qkrtntjd의 이미지

감사합니다

qkrtntjd의 이미지

혹시 방법을 알려주실 수 있나요?
이렇게 돌아가는 방법이 아닌 것 같다는 생각이긴 합니다

라스코니의 이미지

돌아간다고 하더라도 검증에 문제가 생길 텐데요.
msvc2008을 사용못할 문제가 없다면 굳이 mingw 만 써야 할 이유는 없을 것 같고요.

다른 라이브러리 쓸 때도 문제가 됩니다. 아니면 이전에 사용했던 라이브러리 홈페이지에서 gcc 용 라이브러리도 제공하는지 찾아보세요.
보통 상용은 많이 지원안하는 경우도 있지만 오픈 소스면 Linux/Windows/Mac 등은 동시에 지원할 겁니다.

배포할 때는 msvc 2008 redistributable 을 포함시키면 됩니다.

qkrtntjd의 이미지

답변 감사합니다.
gcc용 라이브러리를 찾아봐야겠네요

gilgil의 이미지

Qt는 컴파일러별로 다운로드 받아야 하는 모듈들이 따로 제공되고 있습니다.
msvc 컴파일러를 사용한다면 msvc로 빌드된 Qt를 다운받아야 하고
mingw 컴파일러를 사용한다면 mingw로 빌드된 Qt를 다운받아야 합니다.

이것 저것 신경쓰기 싫다면 full source를 다운받아서 빌드를 전부 하면 되는데
컴파일 시간이 엄청 오래 걸립니다.

http://www.gilgil.net/63897

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.