C++ 静态库VisualStudio2008

C++ 静态库VisualStudio2008,c++,C++,我正在尝试创建自己的静态库。然而,我也在使用第三方静态库。现在,在我的静态库中有一个.h文件,其中包含客户端的API。所有实现细节都在.cpp文件中。没有问题。但是,我在.cpp文件中的一些函数依赖于这个第三方库 我不能要求他们安装第三方静态库,需要以某种方式将其包含在我的静态库中。我采取的一些步骤如下: 我把它包括在我的静态库项目中 我给图书管理员添加了一个参考资料,这样它就可以在VS2008中找到它 到目前为止还不错。没有问题 然而,当我尝试创建库时,我似乎得到了LNK4221和LNK400

我正在尝试创建自己的静态库。然而,我也在使用第三方静态库。现在,在我的静态库中有一个.h文件,其中包含客户端的API。所有实现细节都在.cpp文件中。没有问题。但是,我在.cpp文件中的一些函数依赖于这个第三方库

我不能要求他们安装第三方静态库,需要以某种方式将其包含在我的静态库中。我采取的一些步骤如下:

  • 我把它包括在我的静态库项目中
  • 我给图书管理员添加了一个参考资料,这样它就可以在VS2008中找到它
  • 到目前为止还不错。没有问题

    然而,当我尝试创建库时,我似乎得到了LNK4221和LNK4006警告。这些都与第三方obj文件有关。 在LNK4006的例子中,我看到了不同类的多个函数声明,它表示忽略了第二个定义。 在LNK4221的例子中,我调用的函数似乎都没有使用该obj,因此它永远不会被使用

    所以,问题是我如何摆脱这些警告?我知道我正在使用第三方静态库,我的原始testapp也可以使用它。这里的问题是提供一个静态库

    进一步的研究表明,有人在现有的静态库中使用了多个静态库。但是,目前,我不知道还有什么办法可以继续。 似乎我正在为库中的每个obj生成所有这些警告。
    也许我需要隔离我正在使用的obj,只是使用它

    但这些只是一些想法。如果有人能在这方面提供帮助,我将不胜感激。我确实在这里找到了一些类似的帖子,但似乎没有一个对我来说可行的解决方案

    希望这是清楚和准确的

    在通过谷歌和msdn看到了什么之后

    更新: 当我只是简单地将第三方库添加到vs2008时,这里有一些链接器相关的警告消息

    编译。。。 1> TFLib.cpp 1> 正在创建库。。。 1> cryptlib.lib(pch.obj):警告LNK4221:未找到公共符号;存档成员将无法访问 1> cryptlib.lib(3way.obj):警告LNK4006:“void\u cdecl CryptoPP::ThreeWay\u testinstations(void)”(?ThreeWay_TestInstantiations@CryptoPP@@YAXXZ)已在cryptlib.lib(3way.obj)中定义;第二个定义被忽略 1> cryptlib.lib(3way.obj):警告LNK4006:“public:virtual void\uu thiscall CryptoPP::ThreeWay::Base::UncheckedSetKey(unsigned char const*,unsigned int,class CryptoPP::NameValuePairs const&)”(?UncheckedSetKey@Base@ThreeWay@CryptoPP@@UAEXPBEIABVNameValuePairs@3@@Z) 已在cryptlib.lib(3way.obj)中定义;第二个定义被忽略 1> cryptlib.lib(3way.obj):警告LNK4006:“public:virtualvoid\uu thiscall CryptoPP::ThreeWay::Enc::ProcessAndXorBlock(unsigned char const*,unsigned char const*,unsigned char*)const”(?ProcessAndXorBlock@Enc@ThreeWay@CryptoPP@@UBEXPBE0PAE@Z)已在cryptlib.lib(3way.obj)中定义;第二个定义被忽略 1> cryptlib.lib(3way.obj):警告LNK4006:“public:virtualvoid\uu thiscall CryptoPP::ThreeWay::Dec::ProcessAndXorBlock(unsigned char const*,unsigned char const*,unsigned char*)const”(?ProcessAndXorBlock@Dec@ThreeWay@CryptoPP@@UBEXPBE0PAE@Z)已在cryptlib.lib(3way.obj)中定义;第二个定义被忽略 1> cryptlib.lib(3way.obj):警告LNK4221:未找到公共符号;存档成员将无法访问 1> lib(adler32.obj):警告LNK4006:“public:virtualvoid\uu thiscall CryptoPP::adler32::Update(unsigned char const*,unsigned int)”(?Update@Adler32@CryptoPP@@UAEXPBEI@Z)已在cryptlib.lib(adler32.obj)中定义;第二个定义被忽略 1> cryptlib.lib(adler32.obj):警告LNK4006:“public:virtualvoid\uu thiscall CryptoPP::adler32::TruncatedFinal(unsigned char*,unsigned int)”(?TruncatedFinal@Adler32@CryptoPP@@UAEXPAEI@Z)已在cryptlib.lib(adler32.obj)中定义;第二个定义被忽略 1> cryptlib.lib(adler32.obj):警告LNK4221:未找到公共符号;存档成员将无法访问 1> cryptlib.lib(algparam.obj):警告LNK4006:“public:virtual bool\uu thiscall CryptoPP::CombinedNameValuePairs::GetVoidValue(char const*,class type_info const&,void*)const”(?GetVoidValue@CombinedNameValuePairs@CryptoPP@@UBE\u NPBDABVtype\u信息@@PAX@Z)已在cryptlib.lib(algparam.obj)中定义;第二个定义被忽略 1> cryptlib.lib(algparam.obj):警告LNK4006:“受保护:void u thiscall CryptoPP::AlgorithmParametersBase::operator=(类CryptoPP::AlgorithmParametersBase常量&)”(??4AlgorithmParametersBase@CryptoPP@@IAEXABV01@@Z)已在cryptlib.lib(algparam.obj)中定义;第二个定义被忽略 1> cryptlib.lib(algparam.obj):警告LNK4006:“public:bool\uu thiscall CryptoPP::algorithmparameters base::GetVoidValue(char const*,class type_info const&,void*)const”(?GetVoidValue@AlgorithmParametersBase@CryptoPP@@QBE\u NPBDABVtype\u信息@@PAX@Z)已在cryptlib.lib(algparam.obj)中定义;第二个定义被忽略 1> cryptlib.lib(algparam.obj):警告LNK4006:“public:u thiscall CryptoPP::AlgorithmParameters::AlgorithmParameters(void)”(??0AlgorithmParameters@CryptoPP@@QAE@XZ)已在cryptlib.lib(algparam.obj)中定义;第二个定义被忽略 1> cryptlib.lib(algparam.obj):警告LNK4006:“public:u thiscall CryptoPP::AlgorithmParameters::AlgorithmParameters(类CryptoPP::AlgorithmParameters const&)”(?)??0AlgorithmParameters@CryptoPP@@QAE@ABV01@@Z) 已在cryptlib.lib(algparam.obj)中定义;第二个定义被忽略 1> cryptlib.lib(algparam.obj):警告LNK4006:“public:class CryptoPP::AlgorithmParameters&u thiscall CryptoPP::AlgorithmParameters::operator=(class CryptoPP::AlgorithmParameters const&)”(??4AlgorithmParameters@CryptoPP@@QAEAAV01@ABV01@@Z) 已在cryptlib.lib(algparam.obj)中定义;第二种定义