일단 새 프로젝트 - 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이 지원되는 버전부터 이식이 가능. 그 하위버전에서는 클래스는 무리인듯. 함수로 하길..

Posted by wakira
,