2010-08-26 109 views
3

我主要关心的是,我能够使用VC++编写C++ dll。现在dll出现在Debug文件夹中。如何从另一个C++ win32控制台应用程序调用C++ Win32 DLL

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

还有一点,当创建一个DLL,在VC++向导给我THRE选项:

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

现在根据CP的文章我已经使用了第三个选项。 (由于MFC应用程序使用的dll无法关注,现在某些时候进阶的程度很低

是否需要始终选择第三个选项?另外两种选择是什么意思?

回答

6

不能完全肯定你的问题不过是:

它并不真正的问题你使用哪个选项,这只是精灵做什么对你的问题;如果使用第三个选项,则向导会在你的头文件位看起来像这样:

#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中的函数/类: 一个使用__declspec(dllexport)的)这似乎是更方便的选择在几乎所有情况下]或 b )在你的项目中使用.DEF文件

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

3

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

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

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

2

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

1

通过以下步骤设置两个项目。 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. 完成除设置链接中给定的依赖关系 以外的其余步骤。

希望这会有所帮助。

相关问题