我的dll里面静态加载其他dll的静态库(lib),但编译报错,原因?

wym2199 2009-10-26 10:55:51
Linking...
Creating library Debug/JMSDL.lib and object Debug/JMSDL.exp
JMSDL.obj : error LNK2001: unresolved external symbol "int __stdcall GetInfo(void *,struct _VID_PID_MANUFACTURER_PRODUCT *)" (?GetInfo@@YGHPAXPAU_VID_PID_MANUFACTURER_PRODUCT@@@Z)
JMSDL.obj : error LNK2001: unresolved external symbol "int __stdcall OpenDevice(void * *,unsigned short *)" (?OpenDevice@@YGHPAPAXPAG@Z)
JMSDL.obj : error LNK2001: unresolved external symbol "int __stdcall WriteCommand(void *,unsigned char)" (?WriteCommand@@YGHPAXE@Z)
JMSDL.obj : error LNK2001: unresolved external symbol "int __stdcall ReadData(void *,unsigned short *,unsigned long *)" (?ReadData@@YGHPAXPAGPAK@Z)
JMSDL.obj : error LNK2001: unresolved external symbol "int __stdcall GetCorrection(void *,double *)" (?GetCorrection@@YGHPAXPAN@Z)
...全文
225 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wym2199 2009-10-27
  • 打赏
  • 举报
回复
真正原因是原dll导出函数有加extern 'c',而引用时当成c++编译方式调用 当然出错
wym2199 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 toperray 的回复:]
很明显lib没加进去,把lib路径搞对

[/Quote]
我确定路径正确的
wym2199 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 whs1980 的回复:]
把出错的函数名都添加到CCD.def文件里去
GetCorrection
GetInfo
....
然后再编译,再连接
貌似没有导出这些函数
[/Quote]
你是指的添加到原先的dll工程里吧 我有添加的
ToperRay 2009-10-26
  • 打赏
  • 举报
回复
很明显lib没加进去,把lib路径搞对
whs1980 2009-10-26
  • 打赏
  • 举报
回复
把出错的函数名都添加到CCD.def文件里去
GetCorrection
GetInfo
....
然后再编译,再连接
貌似没有导出这些函数
wym2199 2009-10-26
  • 打赏
  • 举报
回复
没人知道吗?
wym2199 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 alicehyxx 的回复:]
这个类导出了吗??MFC扩展类的话,类名前加上 AFX_EXT_CLASS
[/Quote]
不是扩展类 一般函数要加什么特殊的吗
wym2199 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dirdirdir3 的回复:]
感觉像没有把lib包含到工程里面......
[/Quote]
我有加这个
#pragma comment (lib, "CCD.lib")
周成风 2009-10-26
  • 打赏
  • 举报
回复
这个类导出了吗??MFC扩展类的话,类名前加上 AFX_EXT_CLASS
dirdirdir3 2009-10-26
  • 打赏
  • 举报
回复
感觉像没有把lib包含到工程里面......
wooyybb 2009-10-26
  • 打赏
  • 举报
回复
学习.................
oyljerry 2009-10-26
  • 打赏
  • 举报
回复
Debug就用Debug对应的lib,Release就用对应的Release lib,同时注意你的库的Debug和Release的工程设置一致
wym2199 2009-10-26
  • 打赏
  • 举报
回复
为什么是release出错,debug没有错?:::
Creating library Release/JMSDL.lib and object Release/JMSDL.exp
JMSDL.obj : error LNK2001: unresolved external symbol _GetInfo@8
JMSDL.obj : error LNK2001: unresolved external symbol _OpenDevice@8
JMSDL.obj : error LNK2001: unresolved external symbol _WriteCommand@8
JMSDL.obj : error LNK2001: unresolved external symbol _ReadData@12
JMSDL.obj : error LNK2001: unresolved external symbol _GetCorrection@8
Release/JMSDL.dll : fatal error LNK1120: 5 unresolved externals
执行 link.exe 时出错.

JMSDL.dll - 1 error(s), 0 warning(s)
--------------------Configuration: JMSDL - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
ComPort.cpp
JMSDL.cpp
serialport.cpp
Generating Code...
Linking...
Creating library Debug/JMSDL.lib and object Debug/JMSDL.exp

JMSDL.dll - 0 error(s), 0 warning(s)
fangchao918628 2009-10-26
  • 打赏
  • 举报
回复
顶楼上的,看下函数导出了没有,顺便看下,是不是都是Release 或Debug
百事烟 2009-10-26
  • 打赏
  • 举报
回复
看上去是6楼说的对

你有源码,源码本身就是静态库一个版本吗?
如果有先试试动态库版本,动态库加def文件输出定义基本没事
oyljerry 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wym2199 的回复:]
引用 1 楼 dirdirdir3 的回复:
感觉像没有把lib包含到工程里面......

我有加这个
#pragma comment (lib, "CCD.lib")
[/Quote]
CCD.lib是否导出对应的函数...
wym2199 2009-10-26
  • 打赏
  • 举报
回复
??怎么没人了啊

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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