System.DllNotFoundException 에러 처리

[문제]

gpc64.dll을 이용한 프로그램을 다른 컴퓨터에서 실행했더니, 제목과 같은 에러 메시지가 발생했다.

실행시켰을 때의 에러 메시지
디버깅했을 때의 에러 메시지

[환경]

Windows 10 x64, Visual Studio 2019

[System.DllNotFoundExceoption 에러 원인]

원인1. 문제의 에러 메시지는 gpc64.dll 파일이 없기 때문에 표시된다.

-> 그런데 해당 폴더에 dll 파일이 존재할 때도 에러가 발생할 수 있다.

원인2. 이 때, 해당 dll(여기서는 gpc64.dll)이 의존하고 있는 dll이 없어도 똑같은 에러가 발생한다.

-> 해당 dll에 의존하는 모든 dll이 설치되지 않았기 때문에 이런 에러가 발생한다.

[해법]

depends.exe(Dependency Walker)를 이용해서 누락된 DLL을 확인할 줄 알았는데, 이를 계승한 새 프로그램(Download here)으로 확인하였다.

확인한 결과, 나의 경우 C++재배포가능패키지가 없었다. 그래서 다음 링크에서 재배포가능패키지를 설치한다.

Install Microsoft Visual C++ 2019 Redistributable Package on the user’s machine

https://support.microsoft.com/ko-kr/help/2977003/the-latest-supported-visual-c-downloads

[교훈]

DLL을 사용할 때, 의존성 여부도 확인해야 한다.

[참고 사이트]

https://www.sysnet.pe.kr/2/0/713

https://stackoverflow.com/questions/14587775/system-dllnotfoundexception-unable-to-load-dll-no-errors-in-dev-machine-but-er

[dxf]AutoCAD DXF Reference

Product Version Size Format
AutoCAD® 2014 v.u.28.1.01 1,114 KB PDF
AutoCAD® 2013 v.u.27.1.01 1,114 KB PDF
AutoCAD® 2012 v.u.26.1.01 1,112 KB PDF
AutoCAD® 2011 v.u.25.1.01 844 KB PDF
AutoCAD® 2010 v.u.24.1.01 842 KB PDF
AutoCAD® 2009 v.u.23.1.01 1.72 MB PDF
AutoCAD® 2008 v.u.22.1.01 1.80 MB PDF
AutoCAD® 2007 v.u.21.1.01 1.07 MB PDF
AutoCAD® 2006 v.u.20.1.01 1.73 MB PDF
AutoCAD® 2005 v.u19.1.01 1.65 MB PDF
AutoCAD® 2004 v.u18.1.01 1502 KB PDF
AutoCAD® 2002 v.u16.1.01 1627 KB PDF
494 KB ZIP
AutoCAD® 2000 v.u15.0.02 n/a HTML
205 KB EXE
204 KB ZIP
AutoCAD® Release 14 v.u14.1.04 n/a HTML
159 KB EXE
161 KB ZIP
AutoCAD® Release 13 v.u13.1.01 97 KB EXE
AutoCAD® Release 12 n/a HTML
AutoCAD® Release 11 n/a HTML
AutoCAD® Release 10 n/a HTML

이상의 내용은 아래 사이트에 한꺼번에 정리되어 있다.
Excerpted from AutoCAD DXF Reference

[SU]Ray Hit Test in Ruby

Reference : http://www.sketchup.com/intl/en/developer/docs/ourdoc/model#raytest

Model.raytest (compatible with SketchUp 6.0+)
raytest 메소드는 광선(직선)을 모델에 비추는 데에 사용되며, 그 광선이 부딪히는 첫번째 대상을 반환한다.

광선(ray)은 한 점과 한 벡터를 가지고 있는 배열이다[Geom::Point3d(), Geom::Vector3d()]. 그 점은 광선의 시작점을 정의하며, 그 벡터는 방향을 정의한다. 만약 방향벡터가 정규화될 수 없다면(예를 들어 direction = [0, 0, 0]), 방향벡터는 광선의 교점으로 간주한다.

NOTE: 매개변수 wysiwyg_flag는 SU8 M1에서부터 포함되었다.

매개변수:

ray(광선)
한 점과 한 벡터로 구성된 배열
wysiwyg_flag
An optional boolean, added in SU8 M1, indicating whether or not to consider hidden geometry in intersect computations. If this flag is not specified, it defaults to true (WYSIWYG) – i.e. hidden geometry is not intersected against.

반환값:

item
두 개의 값을 가진 배열. 첫번째 값은 광선이 통과하는 점(Point3d의 변수유형)이다. 두번째 요소는 광선이 부딪히는 모든 개체들의 배열이다. 예를 들어, For example, if the ray hits a face that contained by a component instance the instance path would be [Component1]. If the ray hit a face that is contained by a component instance, which is contained by another component instance and so on, the instance path would be [Component1, Component2, Component3…].

sun-path projections

태양궤적도를 다음과 같이 여러 투영법으로 투영하여 작성하였다.

태양의 위치는 천구 위에 표현되기 때문에 3차원 구이다. 이것을 2차원 평면으로 표현하려면 투영법이 필요하다.

  1. Sun-path projections
  2. Stereographic projection
  3. Coordinate transformations
  4. Transformations and Projections
  5. Spherical Projections
  6. Stereographic projection
  7. 日照環境のための基礎計算式 THE CALCULATION METHODS OF SOLAR ENVIRONMENT [in Japanese]
  8. The Sun’s Position
  9. Cylindrical Equidistant Projection
  10. Reading Sun Path Diagrams

[SolarView]Screen shot – Solar Access

건물 주변의 특정 지점에 대한 일조시간을 분석하는 장면
– 건물이 들어서면 인접 지역에 일조(solar access)를 방해하게 됨
– 특정 지점에서 일조 시간이 얼마나 확보되며, 얼마나 일조 방해를 받는지를 분석함

point_analysis