C++ 为什么我们需要导出C++;?

C++ 为什么我们需要导出C++;?,c++,windows,visual-c++,dll,dllexport,C++,Windows,Visual C++,Dll,Dllexport,我是一个初学者,所以,请容忍我,如果这听起来太琐碎。当我在网上搜索这个,我得到的结果显示如何做。我的问题是,为什么我们首先要这样做?您不需要导出任何内容,除非您正在创建DLL。在这种情况下,可以使用属性作为“旧学校”使用文件的替代方式。 < P>这是Windows平台上开发C++时的特定内容。 必须使用uu declspec(dllexport)修饰符,才能使类及其方法显示在DLL的导出符号列表中 这样,使用DLL的可执行文件可以实例化和调用这些类中的方法 但是,你必须确保可执行文件和DLL是由

我是一个初学者,所以,请容忍我,如果这听起来太琐碎。当我在网上搜索这个,我得到的结果显示如何做。我的问题是,为什么我们首先要这样做?

您不需要导出任何内容,除非您正在创建DLL。在这种情况下,可以使用属性作为“旧学校”使用文件的替代方式。

< P>这是Windows平台上开发C++时的特定内容。

必须使用uu declspec(dllexport)修饰符,才能使类及其方法显示在DLL的导出符号列表中

这样,使用DLL的可执行文件可以实例化和调用这些类中的方法


<>但是,你必须确保可执行文件和DLL是由同一编译器的同一版本编译的,因为C++符号是使用相对复杂的名字编码(导出的)来导出的(你可以看到使用),它的格式从一个编译器到另一个编译器。

技术上,你不能输出一个类,只能输出一个函数。 但是,您可以在类级别指定导出所有函数

导出函数意味着可以从当前可执行文件的外部调用该函数


例如,当您编写一个单独实体的dll时,这是必需的。

请详细说明您想要什么?您所说的“导出类”是什么意思?为什么我们需要执行u declspec(dllimport)/u declspec(dllexport)类?它不是特定于Windows的。Symbian OS将导出与def文件一起使用。@Dynite:dllexport特定于Windows平台。我没有提到def文件,因为考虑到名称混乱的复杂性,它们并不适合导出完整类符号?根据我的理解,dll是在运行时加载的,并且基于对象(与该dll有关),从dll调用函数。因此,如果我在可执行文件中创建了一个对象(来自dll),那么仍然需要公开我的dll函数吗?@Atul-如果你想调用不在可执行文件中的东西(即,它在dll中),那么必须导出这些函数,以便你的exe可以找到它们(链接)。这是不正确的。您可以将
\uu declspec(dllexport)
修饰符放在一个类上,该修饰符将负责导出名称已损坏的类的所有函数成员。严格来说,这是正确的,您不能只导出一个类的函数。但是,可以通过标记类来指定要导出类中的所有函数。区别是微妙的,我会同意:)C++ Oracle Squtc(DLEx销)不是C++,而是供应商特定的扩展。