为什么我的vs2010动态链接库中没有生成.lib文件

/***********************************************
FatherTree.h file
模板类由于在编译的的时候并不在
.obj文件中产生目标代码,也就没有地址,
而动态链接库导出,导出函数是需要地址的。
***********************************************/
#pragma warning (disable:4091)
#pragma warning (disable:4005)
#ifdef MYLIBAPI
//如果定义了宏就忽略此定义
//此时定义的为导出函数
#else
/************************************************
定义导入函数
************************************************/
#define MYLIBAPI extern "C" _declspec(dllimport)
#endif
//开始定义结构
MYLIBAPI struct Node
{
Node *left;
Node *right;
Node *father;
int info;
};
//开始定义类
MYLIBAPIclass FatherTree
{
protected:
//是否为父亲的左孩子
bool IsLeft(Node *p);
bool IsRight(Node *p);
//设置左子树
void SetLeft(Node *p,const int value);
//设置右子树
void SetRight(Node *p,int value);
public:
FatherTree();
//首先构造根节点
Node* MakeTree(int value);
//二叉搜索插入法
bool SearchInsert(int value);
//前序遍历
void Prev_Watch();
//后序遍历
void Preo_Watch();
void Watch_prev()
{
Node *p=root;
Watch_prev(p);
}
void Watch_preo()
{
Node *p=root;
Watch_preo(p);
}
void Watch_prin()
{
Node *p=root;
Watch_prin(p);
}
protected:
//递归前序遍历
void Watch_prev(Node *p);
//递归后序遍历
void Watch_preo(Node *p);
//递归中序遍历
void Watch_prin(Node *p);
private:
Node *root;
};

/////////.cpp
。。。
编译生成之后只有 .dll文件却没有.lib文件这是这么一回事啊

在工程属性 -》 link 里面,有一项是设置是否生成这个lib的追问

没有这个选项啊 ,能不能说的具体点啊,我找了好久了

追答

我说的是 链接器-> 高级 -> 导入库 那里指定名字那个。
这里有解释
http://msdn.microsoft.com/zh-cn/library/67wc07b9(v=vs.80).aspx

你代码里面没有导出函数名字,就不会生成 lib 文件了。
之前没仔细看你代码,看来你是 把 导出写成导入了,英语不行啊
#define MYLIBAPI extern "C" _declspec(dllexport) 才对呵呵。

不过你确定你代码这样子使用对了吗?
这个一般都是加在函数前面导出函数的。
http://msdn.microsoft.com/zh-cn/library/3y1sfaz2(v=vs.80).aspx

按照说明也可以导出对象的定义。你这个加在类的定义前面的用法我没见过。

追问

#include
#include
#define MYLIBAPI extern "C" _declspec(dllexport)
#include "FatherTree.h"
这是.cpp文件中的内容

我试过了你的方法怎么还是不行啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
其实有2个办法的

找不到link的话,
你可以在cpp文件头加上#pragma comment(lib,"这里面就是你要添加的lib");
相似回答