Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “已清除”宏是否导出到.lib文件?_C++_Visual Studio 2008_Macros_Lnk2019 - Fatal编程技术网

C++ “已清除”宏是否导出到.lib文件?

C++ “已清除”宏是否导出到.lib文件?,c++,visual-studio-2008,macros,lnk2019,C++,Visual Studio 2008,Macros,Lnk2019,我有一些宏,比如define dosomethingx somethingx,它被编译成dll。我会在构建所创建的库中使用该宏吗?否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在 如果要在库中导出dosomething符号,必须将其声明为函数。否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在 如果要在库中导出剂量测量符号,必须将其声明为函数。宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。

我有一些宏,比如define dosomethingx somethingx,它被编译成dll。我会在构建所创建的库中使用该宏吗?

宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在

如果要在库中导出dosomething符号,必须将其声明为函数。

宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在


如果要在库中导出剂量测量符号,必须将其声明为函数。

宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。因此,答案是否定的。宏不会导出


你需要什么?您不能只包含给定的头文件吗?

宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。因此,答案是否定的。宏不会导出

你需要什么?您不能只包含给定的头文件吗?

宏甚至对编译器都不可见。在预处理过程中,它们会被替换文本替换,这发生在最开始的时候。宏是愚蠢的,他们对你或你的动机一无所知。他们甚至不知道你在写什么语言。当心

没有


宏甚至对编译器都不可见。在预处理过程中,它们会被替换文本替换,这发生在最开始的时候。宏是愚蠢的,他们对你或你的动机一无所知。他们甚至不知道你在写什么语言。当心

我有一套编译成库的代码。现在,我试图为这组代码创建一个COM接口,因此我将该库包含在ATL项目的链接器属性中。在构建时,ATL项目在我有这些宏的地方抛出LNK2019未定义外部符号的链接器错误。那么,有没有办法解决这个问题,或者我应该删除宏并将其重新定义为标准函数?这些可能是函数、类或全局变量,但不是宏。你能给出一些代码和更多信息吗?宏定义了assertionfailure\u expr、\u action\if_expr\{\AssertionBreak\uuuu LINE\uuuuuuuuuuuu,Stringifier\uExpr,\uuuuuuuu FILE\uuuuuuuuuu action;\}LNK2019错误表示AssertionBreak外部符号未定义。@Venkatesh Kumar:AssertionBreak不是宏!OnAssertionFailure是,但它不会出现在dll中,因为它已被AssertionBreakI替换。我有一组编译到库中的代码。现在,我试图为这组代码创建一个COM接口,因此我将该库包含在ATL项目的链接器属性中。在构建时,ATL项目在我有这些宏的地方抛出LNK2019未定义外部符号的链接器错误。那么,有没有办法解决这个问题,或者我应该删除宏并将其重新定义为标准函数?这些可能是函数、类或全局变量,但不是宏。你能给出一些代码和更多信息吗?宏定义了assertionfailure\u expr、\u action\if_expr\{\AssertionBreak\uuuu LINE\uuuuuuuuuuuu,Stringifier\uExpr,\uuuuuuuu FILE\uuuuuuuuuu action;\}LNK2019错误表示AssertionBreak外部符号未定义。@Venkatesh Kumar:AssertionBreak不是宏!OnAssertionFailure是,但它不会出现在dll中,因为它已被AssertionBreak替换