如何链接.lib到.dll中 ??

noahnoah 2005-03-04 05:06:33
偶用VC写了一个.lib文件,在 exe 应用中可以正常使用。但当在.dll中使用时,出现链接错误:unresolved external symbol _getnum。lib中函数名叫getnum,但在连接时好像给前面加了一个_.
不知何故?偶写的.lib只有一个头文件和源文件,没有任何编译指令。要连接入.dll的lib写法有什么不同 ? 多谢!!

...全文
334 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxy2003 2005-03-17
  • 打赏
  • 举报
回复
楼主怎么还不接帖?
wshcdr 2005-03-14
  • 打赏
  • 举报
回复
楼主怎么还不接帖?
力为 2005-03-05
  • 打赏
  • 举报
回复
估计是你的VC工程设置不一致所致
wshcdr 2005-03-05
  • 打赏
  • 举报
回复
1.首先做一个LIB工程
为了避免不必要的麻烦
偶把用了__stdcall来修饰函数
函数体如下:
///////////////////////
#include <iostream>

using namespace std;

void __stdcall LibFoo()
{
cout<<"LibFoo!"<<endl;
}
//////////////////////////
2.做一个DLL工程(工程名Dll4)
选类型的时候,采用第三个。因为第三个已经把一个DLL的主干搭建出来
用起来比较方便。:)
这个时候可把第一步生成的lib文件拷贝到该DLL工程路径下,和该工程DEBUG文件夹在同一目录
这么做是为了调要LIB中的LibFoo()函数。
然后下面是声明,链接LibFoo()函数的主要步骤
//////////////////
#pragma comment(lib , "Lib1")
void __stdcall LibFoo();

DLL4_API int fnDll4(void)
{
LibFoo();
printf("fnDll4/n");
return 42;
}
///////////////////////
3.建立一个WIN32 Console工程
同时把第二步中生成的DLL文件以及该DLL对应的LIB文件,和第一步中生成的LIB文件
一起拷贝倒该WIN32 Console工程路径下
所以代码如下:
/////////////////////
#include <iostream>

using namespace std;
#pragma comment(lib, "Dll4")
__declspec(dllimport) int fnDll4(void);
void main()
{
cout<<"TestDllLib"<<endl;
fnDll4();
}
///////////////////////////
编译运行,成功。


THE END
wshcdr 2005-03-04
  • 打赏
  • 举报
回复
MARK,晚上来试!

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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