DLL对应的导入库一定会生成的
测试代码:
#pragma once #define TESTDEPEND_EXPORTS #ifdef TESTDEPEND_EXPORTS #define TESTDEPEND_API __declspec(dllexport) #else #define TESTDEPEND_API __declspec(dllimport) #endif #include <string> class A { public: TESTDEPEND_API A(); TESTDEPEND_API void hello(std::string name); private: int c; int b; }; #include "A.h" #include <iostream> A::A() : b(1), c(2) { } void A::hello(std::string name) { std::cout << b - c << "-hello-" << name << std::endl; }
生成的文件:
连接器,高级导入库里面可以进行设置。
隐式链接指将DLL的函数符号输出库LIB链接,在执行文件中IMPORT段加入一系列函数的入口点!程序在加载启动时自动加载这些DLL,并查找函数入口点!像普通的SDK程序要加入KERNEL32。LIB链接就是!这样的方法是当使用DLL多时,程序启动很慢、! 动态链接指显式加载DLL,利用LoadLibrary,GetProcAddress取得函数入口点,执行再释放,这种方法是程序简洁,快速!但是不利于输出太多函数的DLL使用!代码量太大!