공유 클래스가 있습니다. 선언자는 공유 헤더에 있으며 구현은 주 프로그램에 있습니다. 주요 프로그램은 DLL과 exec 함수를로드하고 함수는 공유 클래스의 객체를 생성합니다.[windows] 다시 연결
테스트 코드 :
shared_header.h :
#include<stdio.h>
class sharedClass{
public:
sharedClass();
};
plugin.cpp -> libplugin.dll
#include"shared_header.h"
extern "C"
void loader(){
printf("Plugin is loaded!\n");
new sharedClass;
}
base.cpp -> base.exe
#include"shared_header.h"
sharedClass::sharedClass(){
printf("Shared class is loaded!\n");
}
int main(){
/*
some actions to load libplugin.dll and exec function loader
*/
return 0;}
그래서보고 싶습니다.
Plugin is loaded!
Shared class is loaded!
그리고 Linux에서 작동합니다. 그러나 Windows에서 libplugin.dll을 링크하는 동안 "undefined refernce from sharedClass :: sharedClass()"오류가 발생합니다. 어떻게 이런 식으로 링크 프로그램과 플러그인이 필요합니까?
추신. Mingw, 안정 버전.
PPS. 나는 끔찍한 영어로 유감이다.
예,하지만 알고 있듯이 Windows에서 동일한 동작을 시뮬레이트하는 방법이 있습니다 ... – Staseg
나는 그런 방법에 대해 모르겠다. 당신은 언제나 "손으로"할 수 있습니다. 누락 된 생성자에 대한 함수 포인터를 정의하고, DLL의 로딩 함수에서 DLL이 들어있는 EXE를로드하고 그 함수 포인터를 초기화해야합니다. –