dll调用lib的出错的问题

sdyjmc 2007-02-27 08:55:28
首先建立了一个lib工程:add
//add.h
#ifndef LIB_H
#define LIB_H
extern "C" int add(int x,int y); //declare c compile external function
#endif
//add.cpp
#include "add.h"
int add(int x,int y){
return x + y;
}
再建立一个非MFC的dll工程:addcalldll
//libcall.h
#ifndef LIB_H

#define LIB_H

extern "C" int _declspec(dllexport) add1(int x, int y);

#endif
//libcall.c
#include "libcall.h"
#include "..\\add\\add.h"
#pragma comment(lib,"..\\add\\debug\\add.lib") //define static library
extern "C" _declspec(dllimport) int add(int x,int y);

int add1(int x, int y)

{

return add(x,y);

}

可是在build的时候出错:
Compiling...
libcall.c
c:\testlib\addcalldall\libcall.h(5) : error C2059: syntax error : 'string'
c:\testlib\addcalldall\libcall.c(4) : error C2059: syntax error : 'string'

如果建立一个exe工程调用lib的时候不会出错,难道dll中调用lib要使用什么特殊的处理吗?
//exe工程调用方式:
//main.cpp
#include <stdio.h>
#include "..\\add\\add.h"
#pragma comment(lib,"..\\add\\debug\\add.lib") //define static library

int main(int argc,char* argv[])
{
printf("2+3 = %d",add(2,3));
return 0;
}
我看<< VC++动态链接库(DLL)编程深入浅出(一)>>
静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
不知那位大人能帮我看看?
...全文
257 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
PINGZI437 2008-07-27
  • 打赏
  • 举报
回复
还有,好像函数名中不能出现数字
luoshayu 2007-02-27
  • 打赏
  • 举报
回复
//libcall.c
#include "libcall.h"
#include "..\\add\\add.h"
#pragma comment(lib,"..\\add\\debug\\add.lib") //define static library
-->>把这个注释掉试试//extern "C" _declspec(dllimport) int add(int x,int y);
wenbaby 2007-02-27
  • 打赏
  • 举报
回复
首先纠正一下:静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,这句话是错的,静态库中可以再包含其他的库.

15,471

社区成员

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

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