728x90
반응형

explicit 3

[C++] GetProcAddress가 nullptr을 Return 할 때,

기존에는 아무 생각 없이 잘 되었기 때문에 신경 쓰지 않았는데, 오늘 테스트 중에 계속 nullptr가 리턴되어서 난감했다. DLL에는 아래와 같이 만들어 주고 extern "C" __declspec(dllexport) int __get_string(string* str); extern "C" __declspec(dllexport) int __disp_string(); Main에는 아래와 같이 해 두었다. int main() { HMODULE hmodule = LoadLibrary(L"DllCommon.dll"); if (hmodule != NULL) { using FUNC_DISP = int(*)(); FUNC_DISP func = (FUNC_DISP)GetProcAddress(hmodule, "__d..

error C2558 : no copy constructor available or copy constructor is declared 'explicit'

클래스나 구조체를 vector의 push_back을 이용하여 넣으려고 하니 C2558 에러가 발생한다. 생성자에서 복사가 불가능하거나 복사 생성자에 explicit이 선언되어 있다는 것이다. 여기저기 검색하다 보니 const를 선언하지 않아서 발생한 에러였다. typedef struct PSOPACK_T { PSOPACK_T(PSOPACK_T& other) { func = move(other.func); } } typedef struct PSOPACK_T { PSOPACK_T(const PSOPACK_T& other) { func = move(other.func); } }

[C++] Implicit Linking/Explicit Linking 장단점

1. Implicit Linking (묵시적 링크) Implicit Linking은 정확하게 표현하면 Implicit Load Time Linking 이라 할 수 있는데 이는 해당 프로그램에서 사용될 DLL 정보를 프로그램에 내장하는 방법이다. 이렇게 하면 프로그램을 실행할 때 어떤 DLL이 필요한지 알려주어 프로그램이 착오 없이 실행된다. Implicit Linking으로 사용하고자 할 때는 해당 LIB 파일을 링크 옵션에 더해준 뒤 헤더 파일을 소스코드에 포함시키고 원하는 함수를 사용하면 되므로 간단하다. 2. Explicit Linking (명시적 링크) Explicit Linking은 Implicit Linking에 비해 그 사용이 까다롭지만 원하는 시점에 마음대로 올리고 내릴 수 있다는 점에서 ..

728x90
반응형