여기와 좀 관련은 없지만....윈도우 api 질문입니다.

felix01의 이미지

Winsock2를 이용해서 네트워크 프로그래밍을 했습니다.

http프로토콜을 이용해서 html페이지를 긁고 제가 원하는 정보를 뽑아서

윈도우gui로 내보내는 프로그램이었는데요...

visual studio 2005로 코딩했구요...

OS는 VISTA였습니다.

별 이상없이 잘 돌아가서 여자친구한테 자랑하려고 네이트온으로 보내줬더니

오류메세지가 뜨면서 안된다고 하더군요 -_-;;;

"이틀동안 연락도 없이 만든게 이거냐"더군요 .... -_-;;;

XP에서는 안돌아가는거였습니다.

XP에서 visual studio6으로 컴파일해서 돌리니 잘됩니다.

XP visual studio6에서 컴파일한 프로그램은 vista에서 잘 돌아가더군요...

혹시 비슷한 일 겪으신 분 있나요?

wpcasper의 이미지

여자친구님 컴퓨터에 .NET Framework는 설치되어 있나요??

cleol의 이미지

윈도에서 프로그램해본지 좀 오래되서 가물가물하지만... C 라이브러리 버젼문제일 수 있습니다. 파일명이 system32/MSVC(버젼).dll 이었던것 같은데 확실치는 않네요. 이런 경우라면 dll 파일을 같이 배포하는 수가 있고(아마도 컴파일한 컴에 있던 MSVC(버젼).dll 파일을 실행 파일과 같은 폴더에 복사해 두기만 해도 될겁니다.) 아니면 컴파일할때에 C 라이브러리를 동적링크하지말고 정적링크해서 문제가 해결될 수도 있습니다. 컴파일 옵션을 잘 살펴보세요.

---------------------(수정)

아.. C 라이브러리만 가지고는 안되겠군요. winsock 을 사용하셨으면 winsock 버젼도 문제가 될겁니다. 여하튼 관련된 dll 들이 vista 에서는 더 높은 버젼일테니 동적 링크해서는 xp 에서 안돌아갈겁니다. 관련된 dll 들을 모두 같이 배포하던가, 정적링크해야 합니다.

felix01의 이미지

결론은... "윈도우 플그래밍 컴파일은 XP에서 해라" 가 될 수 있는건가요?';;

cleol의 이미지

^^그렇게 해결하려면 서비스팩 같은 것도 문제가 될거고, 윈98을 아직 사용하는 곳도 있을터이니 윈98 에서 컴파일해야 한다는 식이 되버립니다. 해결 방법은 이미 말씀드렸지만, 관련된 dll 을 같이 배포하거나, 관련된 라이브러리를 정적 링크하는 겁니다.

체스맨의 이미지

예상컨데, manifest 파일 문제가 아닌가 싶네요. vs2005 에서는 manifest 파일을 실행 파일이나 DLL 에 임베드시키지 않으면 단순히 dll 과 exe 만 복사하는 것으로 실행되지 않을 수 있거든요. 우선 빌드된 파일 하부에 생성된 manifest 파일까지 똑같이 복사해서 실행이 된다면 그 문제일 겁니다.

MS 가 DLL 지옥에 대한 해결책으로 내놓은 방편입니다.

이 문제가 아니라면 오류 메시지를 올려보셔야 될 것 같구요... 운영체제 차이 때문에 생긴 문제일 수도 있겠지요...

Orion Project : http://orionids.org

chadr의 이미지

에러메시지를 봐야지 정확히 알겠지만 질문자님께서 쓰신 증상을 보아하니 체스맨님께서 말씀하신게 맞을거 같습니다.

메니페스트를 적용한 개발툴이 vs2005부터입니다. vs6으로 했을때는 문제가 없다고 하시는것 보니 메니페스트 문제가 맞을거 같군요.

우선 mfc를 사용하셨다면 mfc관련 파일까지 다 복사해야합니다.

해결방법은 c:\windows\winsxs 폴더에 보시면 꽤나 긴 이름의 폴더들이 존재합니다.
이중에서 Manifests 폴더를 들어가셔서 기본적으로 crt라이브러리는 사용할테니

"x86_Microsoft.VC80.CRT" 로 시작하는 확장자가 "manifest" 인 파일들을 찾으세요.
아마 한개가 아닐수도 있습니다.. 여러개일수도 있습니다. 우선 한개라고 가정하고 설명하겠습니다.

파일을 찾으셨다면 그 파일이름을 잘 기억하세요..

그리고 마찬가지로 mfc를 사용하셨다면 "x86_Microsoft.VC80.MFC"으로 시작하는 확장자가 "manifest"인 파일을 찾으시고
위와 마찬가지로 파일이름을 잘 기억하세요..

그리고 winsxs 폴더로 다시 돌아가보시면 위에서 기억하신 두개 파일 이름과 동일한 디렉토리가 존재할겁니다.
그 디렉토리로 가보시면 dll 파일이 존재하는데 그 파일들과 위에서 찾았었던 manifest파일을 복사해서 실행파일이 존재하는 곳에 같이
넣고 배포를 하시면됩니다.

그런데 위에서 한번 말씀드렸듯이.. manifest파일이 앞에 이름은 동일한게 여러개 있을지도 모릅니다.
이때는 그 파일들을 일일이 다 테스트를 해보시고 맞는걸 찾으셔야합니다..

이도 저도 귀찮으시면..

그냥

http://www.microsoft.com/downloads/details.aspx?FamilyID=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ko

위의 링크에서 파일을 받으셔서 배포를 하는 컴퓨터에 설치를 하라고 하시면 됩니다. :)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

bestyt의 이미지

VistaOS에서 빌드한 파일을
"Dependency walker"로 보면 무슨문제인지 알수있을겁니다.
모가 linking되어있는지.. 아마도 VistaOS에 있는 VS로 링킹된 exe는 UITheme.dll이 업데이트된걸로 되어있고, XP에선 그파일이 없어서 에러난거일듯합니다.

가장깔끔한방법은..
프로젝트 -> 새프로젝트추가 -> 기타 프로젝트 형식 -> 설치 및 배포
선택해서 설치 setup.exe만들어주면 그파일이 XP에 설치될때 필요한 모든걸 알아서 설치해줍니다.
이방법을 추천합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.