在Visual Studio 2012中使用.lib(C++)

问题描述:

我有一个.lib静态库。我已将它链接到链接器设置的“其他库目录”和“附加依赖项”下,并使用pragma comment (lib, "mylib").。所有这些编译都很好。在Visual Studio 2012中使用.lib(C++)

我在问什么,我只能看到链接解决方案,当我看,是如何实际使用它的功能。如果我的静态库中引用了函数'MyFunc',我怎么能调用它? Visual Studio目前不能识别库中定义的任何名称空间或函数。

谢谢!

+0

对不起怪异的格式。我不知道它为什么这样做 – knoxaramav2

+0

我猜测有一个头文件,你需要编译的方法/类定义? –

+0

关于格式 - 如果您将文本标识为四个空格,则会将其解析为代码块。对于内联注释使用'字符。 –

您需要获取该库的头文件,该库通常随库提供。之后,您需要将其包含在您想要使用它的函数的文件中,并使用声明的原型来调用函数。

您的编译器需要知道函数的原型 - 因为它无法读取/解析lib文件 - 这是链接器的工作。

+1

Doh,这就是当我看到弹出窗口时不会“加载新答案”。 :) – JerKimball

+0

嗯,好的。我从项目中获得.h文件,并在编译时使用release文件夹中的.lib文件。我将链接器设置为释放文件夹,使用.lib,并且使用'MyLib.h'在父目录下的c/C++ - > general中包含'其他目录'。现在它说[错误LNK1104:无法打开文件'MyLib.lib' – knoxaramav2

+0

@JerKimball,但你会失去约。 3秒查看它,这是世界上很长的时间 - 如果我每次点击那个盒子,我仍然会有500个声望:)。 –

如果我理解你的要求,你需要声明一个原型的功能是 - 生命-IN-A-lib目录下:

假设你的lib有:

int Foo(int bar) { ... } 

在你“消费者”,您pragma你的lib中,你需要的东西,说:

extern int Foo(int bar); 

甚至只是:

int Foo(int bar); 

通常情况下,你通过头文件(.h文件)做到这一点,图书馆,他们通常被称为“包含文件”