• 4504阅读
  • 2回复

在其他项目中无法使用自己的qt类库,导致编译失败(有所有代码) [复制链接]

上一主题 下一主题
离线viki
 
只看楼主 正序阅读 楼主  发表于: 2009-05-19
环境:vs 2008 , qt 4.4.2

我用vs2008 的qt 类库模版新建了一个项目,在生成的类里添加了一个SayHi方法,返回字符串“hello world!”, 编译,连接成功,生成Settings.lib,然后我新建了一个控制台项目,添加相应的include,lib ,在main方法里new了一个Settings ,然后编译就出错了:

  1. 错误    1    error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall Settings::Settings(void)" (__imp_??0Settings@@QAE@XZ),该符号在函数 _main 中被引用    main.obj    JustDoIt


相关代码:

类库:
settings_global.h:
  1. #ifndef SETTINGS_GLOBAL_H
  2. #define SETTINGS_GLOBAL_H
  3. #include <Qt/qglobal.h>
  4. #ifdef SETTINGS_LIB
  5. # define SETTINGS_EXPORT Q_DECL_EXPORT
  6. #else
  7. # define SETTINGS_EXPORT Q_DECL_IMPORT
  8. #endif
  9. #endif // SETTINGS_GLOBAL_H


settings.h:
  1. #ifndef SETTINGS_H
  2. #define SETTINGS_H
  3. #include "settings_global.h"
  4. class QString;
  5. class SETTINGS_EXPORT Settings
  6. {
  7. public:
  8.     QString SayHi();
  9.     Settings();
  10.     ~Settings();
  11. };
  12. #endif // SETTINGS_H


settings.cpp:
  1. #include "settings.h"
  2. #include <Qstring>
  3. QString Settings::SayHi()
  4. {
  5.     return QString("Hello world");
  6. }
  7. Settings::Settings(){}
  8. Settings::~Settings(){}


另外一个console项目:
main.cpp
  1. #include "settings.h"
  2. int main(int argc , char ** argv)
  3. {
  4.     Settings * config = new Settings();
  5. }


老大们,这是为什么啊? 如果信息不够详细,难以找到原因,能不能写一个最简单的类库和调用它的项目让我看看阿?不胜感激!
离线viki
只看该作者 2楼 发表于: 2009-05-20
加了哈,头文件和lib文件所在目录以及Settings.lib都作了设置。。。
离线wader
只看该作者 1楼 发表于: 2009-05-20
代码应该没有问题
但你没有将相应的.lib文件加入到工程属性里
快速回复
限100 字节
 
上一个 下一个