일단 새 프로젝트 - MFC - MFC 라이브러리 인가? 그거쓰고 옵션은 MFC 확장 DLL로 줌.
생성하면 거의 새하얀 백지의 코드가 보임.
extern "C" __declspec(dllexport) 뒤에 함수형태.
그리고 기술함.
클래스 형식의 DLL을 델파이에 이식시키기위해서 2주일 동안 쇼를 해봤지만 되지않음.
그래도 방법은 있었다.
DLL의 함수들을 가짜 생성자? 에 쑤셔넣어서 메모리에 등록시키는 법이었다.
extern "C" __declspec(dllexport) int ConstFunction(void)
{
hIns = LoadLibrary("xxxxxx.dll");
a = GetProcAddress(hIns, "DLL내부 함수명");
b = GetProcAddress(hIns, "DLL내부 함수명");
c = GetProcAddress(hIns, "DLL내부 함수명");
}
머 이런식으로 전역변수로 a b c 를 선언하고 메모리할당용 함수를 하나 만들어주면 완료된다.
typedef int ( *a )( int , int ); // a라는 함수포인터를 코드 맨윗줄쯤 추가해줘야 동작하겠지.
소멸자는 FreeLibrary() 로 인스턴스핸들을 인자로 넣어주면 메모리에서 삭제된다.
시박. 이거때문에 내가 2주동안 말도안되는 상상을 해가면서 부풀린 코드만 몇백줄이다.
다른분들은 부디 이런짓 안하길바라면서...
참고로 C++로 만들어진 출처없는 DLL을 다시 DLL로 다듬어서 델파이에 이식시키기 위해서 이짓을하였다.
그리고 알아낸것은 C# 또는 C++로 만들어진 클래스DLL 파일은 델파이에 이식이 불가능(?) 하다고 한다.
확실하진않음.
델파이의 .NET이 지원되는 버전부터 이식이 가능. 그 하위버전에서는 클래스는 무리인듯. 함수로 하길..
'Windows 개발' 카테고리의 다른 글
Win7 64bit Eprocess 구조체 (0) | 2013.08.23 |
---|---|
Write a very small KMDF driver (0) | 2013.08.23 |
Keyboard Filter Driver 제작. ( Key Logger ) (0) | 2013.08.22 |
C# 외부 프로그램 종료하기 / C# Process.GetProcessesByName (0) | 2012.10.12 |
[MFC] 프로그램 안에서 외부 파일을 실행시키기(WinExec, ShellExecute, CreateProcess) (0) | 2012.10.12 |