在Visual Studio 2012中使用.lib(C++)
我有一个.lib静态库。我已将它链接到链接器设置的“其他库目录”和“附加依赖项”下,并使用pragma comment (lib, "mylib").
。所有这些编译都很好。在Visual Studio 2012中使用.lib(C++)
我在问什么,我只能看到链接解决方案,当我看,是如何实际使用它的功能。如果我的静态库中引用了函数'MyFunc',我怎么能调用它? Visual Studio目前不能识别库中定义的任何名称空间或函数。
谢谢!
您需要获取该库的头文件,该库通常随库提供。之后,您需要将其包含在您想要使用它的函数的文件中,并使用声明的原型来调用函数。
您的编译器需要知道函数的原型 - 因为它无法读取/解析lib文件 - 这是链接器的工作。
Doh,这就是当我看到弹出窗口时不会“加载新答案”。 :) – JerKimball
嗯,好的。我从项目中获得.h文件,并在编译时使用release文件夹中的.lib文件。我将链接器设置为释放文件夹,使用.lib,并且使用'MyLib.h'在父目录下的c/C++ - > general中包含'其他目录'。现在它说[错误LNK1104:无法打开文件'MyLib.lib' – knoxaramav2
@JerKimball,但你会失去约。 3秒查看它,这是世界上很长的时间 - 如果我每次点击那个盒子,我仍然会有500个声望:)。 –
如果我理解你的要求,你需要声明一个原型的功能是 - 生命-IN-A-lib目录下:
假设你的lib有:
int Foo(int bar) { ... }
在你“消费者”,您pragma
你的lib中,你需要的东西,说:
extern int Foo(int bar);
甚至只是:
int Foo(int bar);
通常情况下,你通过头文件(.h
文件)做到这一点,图书馆,他们通常被称为“包含文件”
对不起怪异的格式。我不知道它为什么这样做 – knoxaramav2
我猜测有一个头文件,你需要编译的方法/类定义? –
关于格式 - 如果您将文本标识为四个空格,则会将其解析为代码块。对于内联注释使用'字符。 –