静态库项目工程是否可以导出类?

alang512 2014-01-10 01:49:17
今早实现了动态库DLL导出类了,可是建立项目工程在 应用程序类型里 选择 静态库 来建立工程,然后按照动态库的代码来写,并且编译生成了lib库文件, 结果在Test工程测试使用这个lib库的时候,提示 无法解析的外部符号,为什么无法使用这个lib库里的类函数了。 请问,静态库项目工程是否可以导出类?
...全文
349 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vipcxj 2014-01-10
  • 打赏
  • 举报
回复
引用 7 楼 alang512 的回复:
终于解决了,可是还是不太理解。原来问题是发生在LIB工程里 #ifdef MATH_LIB #define MATH_LIB_API __declspec(dllexport) // 导出类 #else//注意不能忽略"#" #define MATH_LIB_API __declspec(dllimport) //导入类 #endif class MATH_LIB_API MyMath// 去掉 MATH_LIB_API { };
你这个MATH_LIB_API宏不就是指定导入导出吗?做动态链接库的时候才需要,静态库不需要
alang512 2014-01-10
  • 打赏
  • 举报
回复
引用 8 楼 wangdahu888 的回复:
静态库项目根本就没有导出一说呀,导出是对于动态库来说的,楼主表要糊涂呀
说得 好, 一针见血,让老子马上结贴。
  • 打赏
  • 举报
回复
静态库项目根本就没有导出一说呀,导出是对于动态库来说的,楼主表要糊涂呀
alang512 2014-01-10
  • 打赏
  • 举报
回复
终于解决了,可是还是不太理解。原来问题是发生在LIB工程里 #ifdef MATH_LIB #define MATH_LIB_API __declspec(dllexport) // 导出类 #else//注意不能忽略"#" #define MATH_LIB_API __declspec(dllimport) //导入类 #endif class MATH_LIB_API MyMath// 去掉 MATH_LIB_API { };
lm_whales 2014-01-10
  • 打赏
  • 举报
回复
xxx 是指 dllimport ,dllexport 这两个指令
lm_whales 2014-01-10
  • 打赏
  • 举报
回复
直接干掉这个 __declspec 和后面那个括号里的一切 如果有 #define XXXX __declspec(xxx) 这种代码 这种 #define 和对应的宏XXXX 一起干掉 不想麻烦 就直接把 #define XXXX __declspec(xxx) 这种代码 替换成 #define XXXX 结束
vipcxj 2014-01-10
  • 打赏
  • 举报
回复
就像1L说的,静态库直接使用,根本不需要导出导入
alang512 2014-01-10
  • 打赏
  • 举报
回复
谢谢楼上, 我已经包含了这些 #include "../Library/MyLib.h" #pragma comment (lib, "../Library/MyLib.lib") 但是在Test工程里 编译之后,在链接过程就提示错误,无法解析外部符号 __declspec
lm_whales 2014-01-10
  • 打赏
  • 举报
回复
不要忘了提取头文件
lm_whales 2014-01-10
  • 打赏
  • 举报
回复
静态库可以直接用

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧