Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ visualc&x2B+;静态库 我在Visual Studio 2008中编写C++静态库A.LIB。在我的静态库中,我使用了另一个静态库B.lib(.lib)公开的几个API_Visual C++_Static Libraries - Fatal编程技术网

Visual c++ visualc&x2B+;静态库 我在Visual Studio 2008中编写C++静态库A.LIB。在我的静态库中,我使用了另一个静态库B.lib(.lib)公开的几个API

Visual c++ visualc&x2B+;静态库 我在Visual Studio 2008中编写C++静态库A.LIB。在我的静态库中,我使用了另一个静态库B.lib(.lib)公开的几个API,visual-c++,static-libraries,Visual C++,Static Libraries,我编写了一个使用a.lib的应用程序。由于A.lib中很少有头文件使用B.lib中的头文件,因此我的应用程序需要B.lib头文件的路径。如何避免我的应用程序,使我不需要提供用于编译的B.lib头文件的路径?您可以转到“设置”并将目录添加到附加的include目录中,只需按名称使用头文件即可 不要在库的界面中使用B-Header中的类型。完全隐藏实现的一个好方法是使用与纯抽象基类一起作为接口。不过,您仍然需要在应用程序中链接B.lib 样品前: // A.h #include "B.h"

我编写了一个使用a.lib的应用程序。由于A.lib中很少有头文件使用B.lib中的头文件,因此我的应用程序需要B.lib头文件的路径。如何避免我的应用程序,使我不需要提供用于编译的B.lib头文件的路径?

您可以转到“设置”并将目录添加到附加的include目录中,只需按名称使用头文件即可

不要在库的界面中使用B-Header中的类型。完全隐藏实现的一个好方法是使用与纯抽象基类一起作为接口。不过,您仍然需要在应用程序中链接B.lib

样品前:

// A.h
#include "B.h"    

class Foo {
public:
    void DoStuff();
private:
    B::Bar Data;  // B::Data comes from library B
};
这在你的标题中增加了一个对B的依赖

对于Factory,您的应用程序现在使用IFoo.h而不是A.h:

// IFoo.h
class IFoo {
public:
    static IFoo * CreateInstance( ); // implemented in IFoo.cpp, just returns new Foo

    virtual void DoStuff() = 0;

    virtual ~IFoo() {}
};

// A.h
class Foo : public IFoo {
public:
    virtual void DoStuff();
private:
    B::Bar Data;  // B::Data comes from library B
};