Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

Traceback (most recent call last):
  File "c:\SystemTrading\EtfAlgoTrader.py", line 2, in 
    import win32com.client
  File "C:\ProgramData\Anaconda3\envs\py38_32\lib\site-packages\win32com\__init__.py", line 5, in 
ImportError: DLL load failed while importing win32api: %1은(는) 올바른 Win32 응용 프로그램이 아닙니다.
PS C:\SystemTrading>  c:; cd 'c:\SystemTrading'; & 'C:\ProgramData\Anaconda3\envs\py38_32\python.exe' 'c:\Users\byung\.vscode\extensions\ms-python.python-2021.4.765268190\pythonFiles\lib\python\debugpy\launcher' '63602' '--' 
Traceback (most recent call last):
  File "c:\SystemTrading\EtfAlgoTrader.py", line 2, in 
    import win32com.client
  File "C:\ProgramData\Anaconda3\envs\py38_32\lib\site-packages\win32com\__init__.py", line 5, in 
    import win32api, sys, os
ImportError: DLL load failed while importing win32api: %1은(는) 올바른 Win32 응용 프로그램이 아닙니다.

위와 같이 에러가 발생

Anaconda 환경에서 아래 코드 수행

conda install -c anaconda pywin32

/*

 * http://sosal.kr/
 * made by so_Sal
 */

'올바른 win32 응용프로그램이 아닙니다.' 라는 메시지와 함께

배포한 프로그램이 동작하지 않는 컴퓨터가 있을 수 있습니다.

이러한 경우의 원인중에 2가지를 말씀 드리면

1. 사용자 컴퓨터에 .Net framework가 설치되어있지 않은경우

2. 프로그램이 x64 64비트 환경에서만 동작하도록 설정되어있는 경우

1번의 경우 사용자의 컴퓨터에 .Net framework 최신버전을 설치하면 간단하게 해결됩니다.


- .Net Framework 설치

http://www.microsoft.com/ko-kr/download/details.aspx?id=30653


Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

한국어 버전으로 설치하시면 간단히 해결됩니다.

2014. 10월 16일 기준으로 최신 닷넷 프레임워크의 버전은 4.5버전 입니다.

구글에 .Net framework라고 치면 최신버전 링크가 최상위에 검색됩니다.

프로그램을 구현하여 배포하는 경우, Release 모드로 배포하셔야합니다.

Debug 모드는 디버깅을 목적으로 컴파일 하는것입니다.

프로그램 중간에 러닝타임에서 변수들의 현황과 프로그램 진행 상황, 메모리 등을 철저하게 분석하기 위한 목적으로

배포하기에는 용량과 메모리사용, DLL 연동 등 단점이 매우 많습니다.

x86, x64 컴파일 모드를 설정하시려면 프로젝트 -> 속성 탭으로 들어가시면 됩니다.

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

프로젝트 클릭

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

속성탭 활성화

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

응용프로그램 탭에서 프레임워크 버전과 프로그램 아이콘 등을 설정할 수 있습니다.

아이콘에도 저작권이 있으니, 구글에서 icon free 정도로 검색하셔서 무료배포를 다운받거나 직접 제작하시길 ^^

프레임워크 버전에 따라 사용자 환경에서 동작여부가 결정날 수 있습니다.

빌드시 지정된 대상 프레임워크 버전보다 낮거나, 설치되어있지 않은 컴퓨터에서는 동작하지 않습니다.

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

빌드탭으로 이동하시면 Debug / Release 모드를 설정할 수 있습니다.

플랫폼 대상(G): 를 보시면 여기서 실제로 동작하는 환경을 설정할 수 있습니다.

x86을 선택하시면 32비트 버전의 윈도우 환경에서만 동작하며,

x64를 선택하시면 64비트 버전의 윈도우 환경에서만 동작합니다.

Any CPU를 선택하시면 x86, x64 (32비트, 64비트) 윈도우 모두에서 동작하게 됩니다.

백준에서 알고리즘 문제를 풀다가 아래 에러가 발생하였다.

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

프로젝트 속성 설정 등 별의별짓을 다해봤지만 그게 문제가 아니었다.

정답은 내 코드의 배열 크기가 너무 컸다는 것이 문제였다! 즉, 내 코드가 잘못된 것.

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida
틀린 코드의 시간과 메모리를 보여주는 건 첨봤다

배열의 크기를 5001*5001*20으로 잡았더니 발생하는 현상.

1957364KB에 8168ms...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

결국은 그냥 내 코드가 잘못된 것이었다.

배열의 크기를 1억 미만으로 잡아주자.

+) 만약 잠깐 됐다가 다시 안된다? 그런 경우는 cout<<1<<"\n"; 과 같은 간단한 코드로 빌드한 후에 다시 원래 코드를 돌려보자.


오늘은 올바른 Win32응용 프로그램이 아닙니다.라는 오류에 대한 해결방법 을 포스팅합니다.

이게 뜨는 이유는 프로그램을 잘못다운받아서 그렇습니다.
64비트 운영체제 프로그램을 32비트 운영체제에서 실행하면 나타는 오류 메세지 입니다.
참고로 64비트 용 프로그램은 32비트에서 실행이 안되기때문 이 오류가 뜹니다..
요즘은 64비트 운영체제를 많이 사용해서 백신이나 대부분 프로그램들이 32bit & 64bit 용을 같이 배포하고있습니다.
그렇기 때문에 자료를 받으실때  32bit 용을 확인하시고 받으세요.. 32bit는 x86 로 표시하고 64비트는 x64 로 표시합니다.
해결방법 자료를 다운받은 곳으로 가셔서 32비트용 프로그램을 다시 받으면 됩니다.
가보시면 32비트 용이 따로 있을거에요.. 윈도우 xp 는 대부분32bit 운영체제 입니다.

vista 부터 윈도우7 ,윈도우8 ,윈도우8.1 은  64비트를 많이 사용합니다.

 

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

 

프로그램을 실행시키면 파일이름+ 올바른 Win32응용 프로그램이 아닙니다.라고 뜨면난감하죠 ..

이건 64비트 용 프로그램을 잘못 받아서 뜨는거래요 32비트 용 프로그램을 다시 받아 실행해보시면 될꺼에요.

 

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

 

 

32비트/ 64비트 차이점 ?

수 많은 유저들이 고민을 하게 됩니다.
64비트..."새로운(?) 기술이니 좋은거겠지.." 하면서도.. "호환성에 아직 문제가 있다던데"...
 
 
64비트와 32비트 OS 사용의 기준은 CPU의 문제가 아닙니다.
메모리의 문제입니다. 메모리주소의 한계가 32비트이냐 64비트이냐의 문제가 실사용에 더욱 지대한 문제를 가져오죠.
 
이는 64비트 지원 CPU는 등장한지 꽤 오랜 시간이 지났지만..왜 최근에서야 이런 논의가 있느냐를 생각해보면 반증됩니다.
그 시대에는 사실 CPU가 64비트를 지원하더라도..일반 사용자들이 사용하는 메모리의 양이 2G를 넘는것이 무리였습니다.
이런 상황에서는 64비트 네이티브 OS를 사용하더라도 사용자들이 가지게 될 수 있는 혜택이 그렇게 많지 않습니다.
하지만 메모리관련 기술의 발전과 그에 따른 대량생산 및 원가절감 으로 인한 가격 하락...
이런 과정을 거쳐 지금은 일반적 데스크탑에 2G램은 기본이죠..(요즘 판매되는 일반적 60만원대의 본체사양)
또한 메모리 가격하락으로 4G이상의 램을 설치하여 사용하는 사용자들도 자연스럽게 늘어났습니다.
 
이에 기존의 OS와 어플리케이션들은 32비트 기반이기때문에 비싼 돈 주고 꽂아 놓은 램의 일부분을 사용할 수 없는 지경까지 오게 된것입니다.
 
이 시점이 64비트용 OS가 일반에게 서서히 공개되기 시작하는 시점입니다.
 
 
앞서 말씀드린 것과 같은 이유로..저는 32비트와 64비트 OS 선택의 문제에 대해서..다른말로 표현하면 64비트OS가 32비트의 그것에 비교했을때 가질 수 있는 혜택을  2가지 정도로 요약하여 인식 하고 있습니다.
 
1.단일 프로세스(프로그램)의 메모리 사용최대허용량이 2G를 넘어선것이라고...
 
이 말은 한개의 프로그램을 실행시켰을 때 2G이상의 메모리를 필요로하는 인코딩등의 동영상편집과 좀 더 높은 수준의 그래픽작업이라든지, 아니면 전문프로그램을 사용할 경우..에 64비트 사용이 빛을 발한다는 것이겠죠.. 하지만 이 또한 그 프로그램이 64비트 네이티브모드를 지원해야만 가능한 작업이죠..(예를들면 포토샵CS4 x64같은 64비트용 프로그램)
 
2.4G초과(32비트는 4G까지 인식합니다.)의 램을 시스템에서 정상적으로 사용 할 수 있다는 점...
6G 또는 8G 이상의 고용량 메모리를 시스템에 설치한 경우에는 4G이상의 부분을..
삽질해가며 램디로 짤라서 쓴다던지..물론 램디로 적절한 용량의 인터넷 임시폴더 사용은 동의합니다만...거기에 2중으로 다시 페이지파일을 올린다는 등의 미친(?) 팁을 사용할 바에는...
정상적으로 64비트 시스템으로 갈아타는것이 옳은 선택이겠죠.
 
위의 2가지 문제에 대해 자신이 혜택을 느낄 수 있는 사용자라면 64비트를 추천하지만..
아니라면..32비트가 정신건강상으로도 이롭고 실제 시스템에서의 성능차이 또한 몸으로 체감하기는 힘든게 사실입니다.
 
결론은...
 
-엄청난 리소스를 사용하는 전문적 프로그램을 사용하고, 그 프로그램이 64비트 네이티브를 지원한다면 당장 64비트로..
-시스템에 설치된 메모리 용량이 6G 이상리면 당장 64비트로..
-어정쩡하게 4G 정도의 램이 설치된 상태라면 고민 좀 해보시는것이..
-3G 이하의 램이 설치된 상태라면 그냥 32비트 사용함이..
  (1,2번 사항에 그 어떠한 혜택도 받을 수 없고 호환성으로 정신만 오염됨)
 
 
추가.
64비트에서 32비트 프로그램이 멀쩡하게 돌아갈 수 있는 것은 WOW64라는 기술이 사용되었기 때문입니다.
이로써 호환성을 99%에 가깝게 해결하였습니다. (MS가 밝히기로는 비스타32비트 환경에서 문제없이 돌아간다면 윈도우7 64비트에서도 100% 동작을 확신한다. 다만 시스템 드라이버등이 아니라 어플리케이션에 한해서...)
 
하지만 여러 벤치 자료에서 보여주듯이 동일 사양의 PC에서 32비트에서의 어플리케이션 성능과 64비트에서 WOW64엔진을 이용한 32비트 어플리케이션의 성능은 별 차이가 없든지..32비트환경이 조금 더 낫습니다..아무런 차이가 없다면 64비트를 쌍수들어 환영하겠지만 더 느릴 수도 있다는것이 문제입니다..(한다리 건너서 작동하는것이 원인이겠죠..)
 
물론 32비트의 7zip과 64비트OS에서의 64비트 7zip은 확실한 성능 차이를 보여줍니다..
 
결론...
-자신이 사용하는 프로그램의 과반수 이상이 64비트 네이티브를 지원하거나 최소한 비스타환경에서 무리없이 돌아갔다면..64비트 반대할 이유 없다..입니다.
 

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

제어판 => 시프템 및 보안 => 시스템 으로 이동동하고 시스템 종류 에 보시면 사용중인 운영체제가 나옵니다.

32비트 이면 32비트 운영체제 로 나오고 64비트 이면 64비트 운영체제로 나옵니다..

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

윈도우8 에서도 확인 하는 방법도 윈도우7에서 확인하는 방법과 같습니다.

윈도우xp 라면 확인 하지않으셔도 됩니다. 윈도우xp는 32비트라고 보시면됩니다.

 

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

Dll 은 올바른 Win32 애플리케이션 이 아닙니다 - Dll eun olbaleun Win32 aepeullikeisyeon i anibnida

 

 

 

공유하기

게시글 관리

구독하기▒ 토니의 컴퓨터 자료창고 ▒

저작자표시

'잡동사니' 카테고리의 다른 글

쿨노래모음 듣기 쿨노래연속듣기 쿨노래전곡듣기  (0)2015.02.24종편채널 채널A,TV조선,MBN,JTBC 실시간tv 방송보기  (0)2015.02.20김건모 노래모음 김건모 노래연속듣기 김건모 노래듣기  (1)2015.02.18EPL 중계 방송보기 다음팟플레이어로 EPL생중계 보기 보는방법  (0)2015.02.13[미드 인기순위] 2015 미드 순위 미국 내 인기 미드순위를 알아보자!  (0)2015.02.12