블로그 이미지
따뜻한 코드 만들기 리본매냐

카테고리

분류 전체보기 (34)
.NET (6)
Database (5)
Daily life (11)
세미나 후기 (0)
마음의 지식 (7)
코드 (1)
Python (1)
외출 (3)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글


x64 환경 : .NET + COM 프로젝트 실행시 오류 - 80040154


x86 운영체제와는 달리, x64 환경으로 이전해 오면서 이런 문제도 발생하게 되는 군요.

솔루션에 Win32 COM 프로젝트와 .NET 프로젝트를 두고 테스트를 하였습니다. Win32 COM 프로젝트는 기본 구현에서 새로운 ATL Simple Object 를 추가한 상태이고, 이를 .NET 프로젝트 측에서 참조한 후, 해당 COM 개체를 생성하려는 데 다음과 같은 오류가 발생하는 경우입니다.

vcpp_cs_mixed_error_1.PNG

"
An unhandled exception of type
'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Retrieving the COM class factory for component with
CLSID {....} failed due to the following error: 80040154
"

원인은 간단합니다. Win32 VC++ 프로젝트 유형은 빌드시에 기계어로의 컴파일이 완료되는 반면, 닷넷 프로젝트는 실행시에 JIT 컴파일러에 의해서 대상 머신에 최적화된 기계어로 변환되기 때문입니다.

감이 오시죠? ^^

Win32 VC++ 프로젝트는 다음과 같이 기본값이 "X86" 으로 지정되어 있습니다.

vcpp_cs_mixed_error_2.PNG

닷넷 프로젝트는 여러분들도 잘 아시는 것처럼 "Any CPU"로 지정되어 있습니다.

vcpp_cs_mixed_error_3.PNG

결과적으로, ConsoleApplication1 응용 프로그램은 실행시에 대상 머신의 환경에 맞게 64비트 응용 프로그램으로 구동되는 반면, 그 내부에서 생성되는 COM DLL 은 32비트로 컴파일 되어 있어 로드시에 오류가 발생하게 되는 것입니다.

그렇다면, 해결 방법은?
어쩔 수 없지요. 어느 한쪽에서 맞춰주는 수 밖에는. 닷넷에서 "Any CPU" 값을 "x86" 으로 바꿔주거나, COM DLL 프로젝트에서 "X64" 로 바꿔주어야 합니다.

Posted by 리본매냐
, |
개념적 무결성

좋은 기능들이긴 하지만 서로 독립적이고 조화되지 못한 아이디어들을 담고 있는 시스템보다는 여러가지 다양한 기능이나 갱신된 내용은 비록 빠졌더라도 하나로 통합된 일련의 설계 아이디어를 반영하는 시스템이 훨신 좋다.


개념적 무결성을 이루는 방법
: 사용의 쉬움
: 단순성과 직설성

한 사람 또는 마음이 잘 맞는 극소수의 사람들의 합의에 의하여 설계된 결과



Posted by 리본매냐
, |

인간 관계는 매우 복잡하며 본질적으로 간단 명료하게 처리하기 어려운 문제지만, 그것은 업무상의 다른 어떤 문제보다 중요하다.
  프로젝트 실패의 원인은 기술적인 난관에 부딪혀서라기 보다는 인간적인 관계 , 정치적 문제로 실패하는 경우가 많다는 것으로 조사되었다고한다.
  창조적, 창의적 생각을 요하는 직업일수록 인간 문제를 간과해서는 안된다. 인간 복잡하고 정의하기 어려우므로  하나의 부품처럼 취급되어서는 안된다.
  개발의 특성을 이해하지 못하는 경영자의 마인드도 문제지만 개발자 역시 관리자가 되었을 때 쪼으면 되다는 생각으로 팀을 꾸려나가는 사람들을 많이 보았다.
  팀장은 닥달하고 팀원의 실수를 용납못하는 분위기를 만들어갔을 때 당장은 생산성을 향상시킬 수 있다.  하지만 이 생산성은 꾸준히 증가할 것인가? 팀장과 팀원은 좋은 팀워크으로 일을 할 수 있을 것인가?
  공장의 기계도 기름칠을 해주며 오작동을 하는 곳을 고쳐주워야한다.
  하물며 인간은 기계보다 더욱 미묘하고 복잡하므로 더 세심히 살펴줘야한다. 격려와 용기를 주고 잘할 수 있는 환경을 만들어줘야한다.
  기계들에게 1번기계가 고장난 것은 다름 기계가 작동하는데 큰 문제가 되지 않지만 인간은 다른다. 기계는 그저 다시 맡은 일만 한다.
  동료1번이 아프거나 걱정거리가 있어 쳐져있으면 관심이 가고 신경이 쓰이기 마련이다.
  개발은 단순히 생산작업이 아니라 그 조직의 분위기를 대변한다할 수 있다. 콘웨이의 법칙에서 알 수 있듯이 소프트웨어 개발은 기술적인 문제보다 정치적인 문제로 흘러가기 싶다.
 하지만 이런 것들을 배제한다는 것 또한 말이 안된다. 기술도 결국은 인간이 만들어 내고 사용하며 하나의 의사소통 도구 이다. 
 기술뿐아니라 다른 학문.. 예를 들어 사회학이나 경제학에서도 근본적인 원인은 인간에게서 찾고 있다. 개발에서도 생산성 향상은 - 이 책에서도 그렇지만 - 근무 환경 개선이라던지 동료와의 좋은 팀워크등에서 온다고 말한다. 또는 프로그램 버그 비율을 개발자의 컨디션과 연관지어 설명하기도 한다.
 피플웨어는 회사 경영, 관리에 대한 이야기다. 아직 사원밖에 안해본 얕은 경험으로 감히 말하긴 어렵지만 CEO들에게 선물하고 싶은 책이다. 실제 이런 회사가 몇몇이나 될까? 과연 실현가능한 이야기들인가?
 지금 우리회사는 화장실 리모델링이 한참이다. 사실 늘 화장실을 쓰면서 좁다는 생각은 했지만 나쁘다는 생각을 한 적은 없었다. 
 지금은 기존 화장실이 정말 좁고 안 좋아보인다. 새로운 화장실에 대한 기대감 때문일까?
 5층 공사로 5층 사람들은 6층까지 물을 뜨러 오고 화장실을 이용하러 오지만 다들 기대감 때문인지 심한 반발감은 없다. 물론 불평은 좀 있겠지만..
 어서 New 화장실이 완공되었으면 한다 ^^..
 하루에 잠시 잠시 이용하는 화장실이지만 이런 변화가 요즘 회사 다닐 맛이 나게 한다.
 회사가 나를 위해 화장실을 리모델링 해주었으니 나도 회사에게 먼가 해주고 싶다.
 뭘 해주면 좋을까???
 직원들끼리 좀더 인간다운 관계를 맺을 수 있도록 재미거리를 찾아야겠다.



   PS. 주저리 주저리.. 항상 글 쓰다 보면 정리되지 않고 그냥 머리속에 떠오르는데로 적어버린다.
         정리하는 습관를 길러야겠다.



 

Posted by 리본매냐
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함