将程序链接到DLL时所需的其他步骤

时间:2014-10-05 19:47:43

标签: .net visual-c++

我已成功使用本教程创建了一个引用C ++ DLL的C ++可执行文件:http://programmingexamples.wikidot.com/blog:1

我是.NET开发人员。使用.NET,您只需从控制台项目添加对DLL的引用。使用C ++,您必须执行三个步骤(链接中包含的步骤4中的所有步骤)。我的问题是:

1) Why do you have to add the LIB as an Additional Dependency (step 4, part 1).  I believe it acts as a stub for the DLL, which is the skeleton.  This is not needed using .NET.
2) Step 4 (part 2) asks you to move the DLL to the same directory as the calling program.  Do you8 have to do this for every calling
program? I assume that if you add a reference to the DLL
(Properties/Common Properties/Add New Reference) that this step is not
needed?
3) Step 4(part 3) states that you must specify the location of the header files.  Why is this step needed if the header files are part of the DLL.  Is this because they are precompiled?

我知道C ++和Visual Basic.NET/C#.NET是两种完全不同的语言,但我还不明白为什么需要这些额外的步骤。

1 个答案:

答案 0 :(得分:0)

  1. 您可以在此处阅读有关lib What is inside .lib file of Static library, Statically linked dynamic library and dynamically linked dynamic library?
  2. 的信息
      

    "您不需要.lib文件来使用动态库,但没有动态库   您不能将DLL中的函数视为您的常规函数   码。相反,您必须手动调用LoadLibrary来加载DLL(和   FreeLibrary当你完成),并获取GetProcAddress   DLL中的函数或数据项的地址。你必须投   返回的地址为适当的指向函数的指针   使用它。"

    1. 您不必将dll移动到可执行目录。您可以将其分配给Windows路径http://www.computerhope.com/issues/ch000549.htm - 这是将要搜索dll的地方。

    2. 标题文件类似于界面。它们包含函数的声明。 Why have header files and .cpp files in C++?"因此,头文件是必需的,因为C ++编译器无法单独搜索符号声明,因此,您必须通过包含这些声明来帮助它。"

      < / LI>