CMakeLists.txt
project(xxx) add_library(xxx SHARED xxx.cpp) add_executable(yyy yyy.cpp) target_link_libraries(yyy xxx)
xxx.h
#ifndef XXX_XXX_H #define XXX_XXX_H #endif #pragma once #ifdef BUILD_XXX_DLL #define IO_XXX_DLL __declspec(export) #else #define IO_XXX_DLL __declspec(import) #endif extern "C" { IO_XXX_DLL void hello(void); }xxx.cpp
#define BUILD_XXX_DLL #include "xxx.h" #include <iostream> IO_XXX_DLL void hello(void) { std::cout<<"Hello from dll!"<<std::endl;std::cin.get(); }
yyy.cpp
#include <windows.h> #include "xxx.h" int main() { HINSTANCE handle = LoadLibrary("C:\Users\Perelman\.CLion2016.1\system\cmake\generated\xxx-4d5c076f\4d5c076f\Debug\libxxx.dll"); typedef void (*pointer)(void); pointer f; f = (pointer)GetProcAddress(handle, "hello"); f(); FreeLibrary(handle); return 0; }