2012-10-10 125 views
0

我有我需要在我的C++项目中使用的第三方库(说,tp.lib)和第三方dll(说,tp.dll)(我的项目使dll ,让我们称之为my.dll)。包括库和dll到C++项目

我已经包含在头文件 使用#pragma评论(LIB,“库名称”),图书馆,也包括在库文件的路径的configurationproperties->接头 - >附加库目录在我C++ Visual Studio项目。

代码编译和链接没关系。但未能执行。当我使用取决于检查,如果我失去了一些东西,我发现没有找到tp.dll。 tp.dll驻留在tp.lib所在的同一个库文件夹中。

我该怎么做才能让tp.dll包含到my.dll中?

+0

是否要将tp.dll静态链接到my.dll中,以便您只能部署my.dll,并且所有代码都将在那里?或者你会不会同意部署tp.dll和my.dll以及应用程序无误地执行? –

+0

我想静态链接tp.dll。所以只有我必须做的是部署my.dll。我怎么能使这成为可能? – user1612986

回答

0

运行时的搜索路径不包括放置lib库的文件夹,因此将DLL与lib放在一起并不能使操作系统在运行时找到它。您可以将其添加到路径或移动DLL。 list of search precedence is on MSDN

0

你不能“包括DLL到另一个DLL”。您需要将它们一起部署,或将依赖项dll放在Windows will find it的地方。

+0

当你说“将它们部署在一起”时,该怎么做? – user1612986

+0

只需将它们复制到提供的链接中的相同文件夹中,即点1) –

1

DLL有不同的搜索路径。从以下引用:docs

通过隐式和显式链接,Windows首先搜索“已知DLL”,例如Kernel32.dll和User32.dll。 Windows然后按以下顺序搜索DLL:

  1. 当前进程的可执行模块所在的目录。

  2. 当前目录。

  3. Windows系统目录。 GetSystemDirectory函数检索此目录的路径。

  4. Windows目录。 GetWindowsDirectory函数检索此目录的路径。

  5. PATH环境变量中列出的目录。

注意 不使用LIBPATH环境变量。