对于def 文件PRIVATE 微软大叔已经解释的很清楚了~但是有些人还是不理解~ 网上又没人写的清楚 微软 大叔是这样写的:
可选的 PRIVATE 关键字禁止将 entryname 放到由 LINK 生成的导入库中。它对同样是由 LINK 生成的图像中的导出无效。(原文地址:http://msdn.microsoft.com/zh- cn/library/hyx1zcd3(v=vs.80).aspx)
字面意思很清楚的写道entryname不会写入到导入库中,什么是导入库捏,就是你链接时生成的 xxx.lib
举个栗子:
// TestDll.def 未加PRIVATE LIBRARY TestDll EXPORTS add //test.cpp #include "stdafx.h" #include "Header.h" #pragma comment(lib,"TestDll.lib") int _tmain(int argc, _TCHAR* argv[]) { int a = add(1,2); printf("%d",a); getchar(); return 0; }
链接无误,运行妥妥;
加了PRVATE关键字呢~
则会出现无法链接到add的错误。
那PRVATE的作用就是无法使用Lib文件来隐式的链接所修饰的add,因为它没有包含在lib文件中,
所以PRVATE所导出的函数只能使用显示的方法使用~