在Visual Studio C++中使用DLL

4

我有一个DLL,在Visual C#中没有问题(简单地添加引用和使用名称空间),现在我正在尝试学习C++,但我不知道如何从DLL引用命名空间。 我可以右键单击项目并选择“引用”,然后从那里单击“添加新引用”,但这只会为我提供一个空的“项目”窗口。 我漏掉了什么?

3个回答

6

当涉及到处理DLL引用时,C++与C#/VB.Net有很大不同。在C#中,只需使用DLL即可引用,因为它包含描述其中的结构的元数据。编译器可以读取此信息,以便从另一个项目中使用。

C ++没有像C#那样在DLL中具有元数据的概念。相反,您必须明确提供头文件形式的元数据。这些文件包含在您的C ++项目中,然后在运行时延迟加载DLL。在C++中,您实际上不是“添加引用”,而是包括一个头文件。

一旦包含了头文件,您就可以通过将其包含在CPP文件中来访问名称空间。

using namespace SomeNamespace;

@GMan,只有在头文件中才是真正的邪恶。我本来想说“在你的CPP文件中”,但我打成了C++。 - JaredPar
“using namespace”和其他一样,是一个可以正确或不正确使用的工具。“using namespace”在头文件中使用是不好的。“using namespace”在C++文件中使用通常是可以的。直到它引起问题,然后你就停止使用它。 - John Dibling

3
首先,如果您正在尝试在纯粹的本机C++中使用与C#应用程序中相同的DLL,则不容易直接调用该DLL。问题在于,您在C#中引用的DLL依赖于.NET框架才能执行(它是一个“托管”DLL,所有C#、VB.NET和C++/CLI程序集都是如此)。有一种简单的方法可以从C++引用“托管”代码,那就是创建一个托管C++项目(也称为C++/CLI)(在Visual Studio的C++项目向导中选择“CLR”部分)。否则,访问托管DLL的唯一方法是将其公开为COM并使用COM来访问对象。

0

编辑:如果你正在使用非托管的 C++,那么之前的回答可能更有帮助;由于参考了 C#,我认为你是在使用托管的 C++。

'添加引用'对话框应该有一系列选项卡 - '项目' 列出当前解决方案中的项目;.NET 列出安装在 GAC 中的库,而'Browse'让您自己查找 DLL。

如果您只想添加对 DLL 的引用,您应该可以通过 'Browse' 完成。如果它是您拥有源代码的项目的输出,请将该项目添加到解决方案中,并将其显示在“项目”选项卡下。

如果这无法帮助您,请告诉我们您使用的 Visual Studio 版本以及要使用的 DLL 的位置和名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接