如何从另一个C ++ win32控制台应用程序调用C ++ Win32 DLL

我主要关心的是,我可以使用VC ++编写一个C ++ DLL。 现在dll出现在Debug文件夹中。

我如何在其他C ++控制台应用程序中使用我的DLL。 如何添加引用或将DLL链接到应用程序。

还有一点,在创build一个DLL时,VC ++向导给了我一个选项:

  1. 一个空的DLL项目
  2. 一个简单的DLL项目
  3. 导出一些符号的DLL

现在按CP的文章我已经使用了第三个选项。 ( 无法按照MFC应用程序所使用的DLL进行操作,在这个时候有些进步不大

我是否需要总是select第三个选项? 另外两个选项是什么意思?

不完全确定你的问题是什么,但是:

你使用哪个选项并不重要,只是向导为你做的事情; 如果你使用第三个选项,那么向导会在头文件中创建一个如下所示的内容:

#ifdef TEST_EXPORTS #define TEST_API __declspec(dllexport) #else #define TEST_API __declspec(dllimport) #endif 

这种方式的工作原理是,在DLL项目中,TEST_EXPORTS是在编译器选项中定义的,因此TEST_API计算为dllexport,从而告诉链接器导出这些符号。 如果你将这个头文件包含在另一个项目中,它将TEST_API定义为dllimport,它告诉编译器在运行时链接到DLL。 这种#define导出符号的方法被广泛使用,易于阅读。

为了在DLL中调用一个函数/类,你需要以下两种方式之一来导出符号:a)使用__declspec(dllexport)[在几乎所有情况下,这似乎是更方便的选择]或者b)使用.DEF文件在你的项目中

也想提一下,你需要在你的解决方案中包含.exe文件的DLL项目或DLL编译生成的.lib文件。

您可以使用“导出一些符号的DLL”来了解如何构建Dll项目。 一旦你明白这一点,使用“一个简单的DLL项目”。 您可能更喜欢始终使用“导出某个符号的DLL”,并更改由向导生成的代码,用您自己的代码替换样例导出的类/函数/符号。

要从客户端项目中引用.Dll项目,请将.lib文件添加到客户端项目链接器依赖项中:项目 – 属性 – 链接器 – 输入 – 附加依赖项。 为了确保.lib文件可以被链接器找到,将.lib文件所在的目录添加到链接器目录列表中。 有两个地方可以完成:在本地客户端项目(项目 – 属性 – 链接器 – 常规 – 其他库目录)和全球所有VC ++项目(工具 – 选项 – VC ++目录 – 库)。

最后一件事是确保DLL可以在运行时被客户端.exe加载。 Dll必须在当前目录,可执行目录,Windows,系统目录下,或者可以通过PATH变量获得。

如Alex Farber所述,可以通过在Visual Studio中的Console应用程序的项目设置中将其指定为依赖项来导入DLL。 您必须确保应用程序能够通过将DLL放置在指定PATH变量的任何位置来查找DLL。 您也可以在应用程序中使用LoadLibrary方法以编程方式加载DLL(请参阅http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx )文档,并调用DLL中导出的方法使用函数GetProcAddress(请参阅http://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx )。

通过以下步骤来设置两个项目。 http://msdn.microsoft.com/en-us/library/ms235636.aspx

在这些说明中,将新项目添加到包含DLL的相同解决方案中。 在大多数情况下,情况可能并非如此。 如果您有两个单独的项目需要处理,请按照以下步骤稍做更改。

  1. 在DLL项目中,确保您已经配置为创建一个DLL文件。 为此,请单击解决方案资源管理器中的项目,然后转到属性。 在配置属性>>常规下,将配置类型更改为“动态库(.dll)”。 现在,通过选择菜单栏上的Build,Build Solution来编译动态链接库。

  2. 创建链接中提到的其他项目和文件。 要在应用程序中使用该DLL,您必须引用它。 为此,添加从动态库创建的lib文件。 该lib文件是在与dll相同的文件夹中创建的。 如果在调试模式下使用Visual Studio,它将在Project >> Folder >> Debug中。 如果使用发布模式,则使用项目文件夹>>发布。 要使用该应用程序中的lib文件,转到项目>>属性>>链接器>>输入>>附加依赖项,并将lib文件的名称添加到列表(在我的情况下“AFR24x7.lib”)。

  3. 为了确保.lib文件可以被链接器找到,将.lib文件所在的目录添加到链接器目录列表中。 有两个地方可以做到这一点:本地客户端项目(项目>>属性>>链接器>>通用>>其他库目录)和全球所有VC ++项目(工具>>选项>> VC ++目录>>库)。

  4. 添加链接中提到的包含文件。

  5. 复制创建的DLL文件并将其粘贴到应用程序的发行版和调试文件夹中(如果使用这两个文件夹)。

  6. 完成除设置链接中给定的依赖关系之外的其余步骤。

希望这会有所帮助。