VS2013 기준으로 하면
1. 메뉴에서 "도구 - ILDasm" 실행
2. 창이 나오면 "파일 - 열기" 로 빌드된 exe 파일이나 dll 파일 열기.
3. 원하는 부분을 더블 클릭 하면 새로운 윈도우에 IL 코드가 나옴.
왠만해서는 IL코드 볼일이 없겠으나, 혹시나 필요가 있을 분들을 위하여.
2014년 4월 7일 월요일
2013년 2월 6일 수요일
Unity3D에서 URL인코딩 방법
System.Web.HttpUtility.UrlEncode(string, Encoding)
처음에는 이것을 쓸려고 하였다. References에도 추가 해 주고 using 구문도 넣어 주었는데, VS에서는 문제 없이 빌드가 되지만 Unity3D에서는 계속 아래와 같은 에러 메시지..
error CS0103: The name `HttpUtility' does not exist in the current context
멘붕 한계까지 올라 올려다 좀 진정 한 후에 다시 구글링~
찾아보니 유니티 자체 모듈에도 같은 기능을 해 주는 것이 있었다. ㅡ,.ㅡ
삽질이야 뭐, 익숙하고 일단 찾아서 다행.. 인데.. 이것 해결 한다고 야근..
야근 시러효~ ㅠㅠ
2012년 10월 24일 수요일
C++ DLL에서 생성한 클래스 인스턴스를 C#에서 사용하기 위한 삽질.
http://www.codeproject.com/Articles/18032/How-to-Marshal-a-C-Class
- struct ITutorialWrapping
- {
- virtual int Func1(int a) = 0;
- };
- class TutorialWrappingClass : public ITutorialWrapping
- {
- int a;
- public:
- virtual int Func1(int a);
- };
- int TutorialWrappingClass::Func1(int a)
- {
- return (a + 10);
- }
- extern "C" __declspec(dllexport) HRESULT __stdcall GetInstance(void** ppv)
- {
- ITutorialWrapping* inst = new TutorialWrappingClass();
- *ppv = inst;
- return S_OK;
- }
- using System;
- using System.Runtime.InteropServices;
- namespace TutorialWrapping
- {
- class Program
- {
- [DllImport("TutorialWrappingDLL.dll")]
- , EntryPoint = "GetInstance"
- , CharSet = CharSet.Ansi
- , CallingConvention = CallingConvention.StdCall
- )]
- [return: MarshalAs(UnmanagedType.I4)]
- extern private unsafe static int GetInstance(void** ppv);
- static void Main(string[] args)
- {
- unsafe
- {
- void* p = null;
- GetInstance(&p);
- }
- }
- }
- }
그냥 생각 나는대로 돌직구 코딩. 왈도 코딩. ㅋ
하고나서 보니 대략 난감. 포인터 주소는 받아왔다만, 어떻게 해야 Func1을 호출 할 수 있는지 못 찾음. 삽질 좀 더 하게 될듯.
하고나서 보니 대략 난감. 포인터 주소는 받아왔다만, 어떻게 해야 Func1을 호출 할 수 있는지 못 찾음. 삽질 좀 더 하게 될듯.
2012년 7월 3일 화요일
오류 CS0051: 일관성 없는 액세스 가능성: ... 매개 변수 형식이 ... 메서드보다 액세스하기 어렵습니다.
http://msdn.microsoft.com/ko-kr/library/4sscdk02(v=vs.80).aspx
일단 코드부터..
A.cs
위와같이 C#코드를 빌드 해 보면 아래와 같은 컴파일 에러 메시지가 나온다.
오류 CS0051: 일관성 없는 액세스 가능성: ... 매개 변수 형식이 ... 메서드보다 액세스하기 어렵습니다.
문제는 A클래스에 public을 선언 해주지 않았던것. 클래스 자체 에서도 접근 키워드를 넣어준다는 것을 잊고 있었다. 만약에 선언이 안되어 있다면 기본 private으로 되는듯 하다.
public class A
로 수정하면 완료.
일단 코드부터..
A.cs
·미리보기 | 소스복사·
- namespace MyApp
- {
- class A
- {
- ...
- }
- }
B.cs
·미리보기 | 소스복사·
- namespace MyApp
- {
- class B
- {
- public void Func(A a)
- {
- ...
- }
- }
- }
오류 CS0051: 일관성 없는 액세스 가능성: ... 매개 변수 형식이 ... 메서드보다 액세스하기 어렵습니다.
문제는 A클래스에 public을 선언 해주지 않았던것. 클래스 자체 에서도 접근 키워드를 넣어준다는 것을 잊고 있었다. 만약에 선언이 안되어 있다면 기본 private으로 되는듯 하다.
public class A
로 수정하면 완료.
2012년 6월 27일 수요일
C# 폼 생성시 레이아웃 변경 후 ResumeLayout을 호출 해 주자.
오랜만에 C#을 만지다보니 기억이 가물가물 해 졌다.
그러다 삽질 한 것중에 하나가, 폼 생성시 생성자에는 보통 InitializeComponent()를 호출 해 준다. 그런데 호출 후에 뭔가 변경하게 될 경우 어떤 컨트롤을 변경 했느냐에 따라 적용이 바로 되는 경우가 있고 안되는 경우가 있었다. 해결은 ResumeLayout()를 호출.
예를 들면, 내가 했던 것 중에는 ScrollableControl을 상속받아 커스텀 컨트롤을 만든게 있었다. 그 컨트롤을 윈폼에 포함 시켜 HorizontalScroll, VerticalScroll 두가지 속성 값을 바꿔 주었는데, 적용이 안되었던 것. this.ResumeLayout(false)을 아래에 넣어줬더니 말끔히 해결 되었다.
그러다 삽질 한 것중에 하나가, 폼 생성시 생성자에는 보통 InitializeComponent()를 호출 해 준다. 그런데 호출 후에 뭔가 변경하게 될 경우 어떤 컨트롤을 변경 했느냐에 따라 적용이 바로 되는 경우가 있고 안되는 경우가 있었다. 해결은 ResumeLayout()를 호출.
예를 들면, 내가 했던 것 중에는 ScrollableControl을 상속받아 커스텀 컨트롤을 만든게 있었다. 그 컨트롤을 윈폼에 포함 시켜 HorizontalScroll, VerticalScroll 두가지 속성 값을 바꿔 주었는데, 적용이 안되었던 것. this.ResumeLayout(false)을 아래에 넣어줬더니 말끔히 해결 되었다.
피드 구독하기:
글 (Atom)