__declspec(dllexport)与__declspec(dllimport)
#if defined(_WINDLL)
#ifdef DLL_EXPORTSTEST
#define TEST_DLL __declspec(dllexport)
#else
#define TEST_DLL __declspec(dllimport)
#endif
#elif defined(__linux)
#define TEST_DLL __attribute__ ((visibility("default"))) ///动态库导出符
#endif
动态编译
可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库,对应dll和.so,缩小执行文件本身的体积,加快了编译速度,节省了系统资源。
静态编译
编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库
nmake(windows下的makefile)
nmake -f nMakeTest.mak CFG="nMakeTest - Win32 Debug"
rc.exe 【将.rc资源文本转变成.res二进制文件】
cl.exe 将.c,.cpp,.cxx编译成obj文件
windows 命令行
windows上整个命令行的长度不能超过260个字符,然而编译命令行往往会超过这个限制,微软提供的解决方案是:将命令行参数写入一个response文件,然后将其传入编译器。