gpt4 book ai didi

c++ - 如何在库加载时将预处理器定义传递给 DLL

转载 作者:可可西里 更新时间:2023-11-01 11:42:14 26 4
gpt4 key购买 nike

我正在开发一个链接到 DLL 的应用程序,该 DLL 本身包含一个数据结构,其定义因预处理器定义而异:

struct Example
{
uint8_t StringA[32];
#if USE_B
uint8_t StringB[32];
#endif
};

我需要在我的应用程序中的不同时间使用结构的两个版本。因此,我似乎需要使用 LoadLibrary 加载 DLL,其中 USE_B 未定义用于部分执行(这是标准且直接的),使用 FreeLibrary 卸载它,然后然后使用定义为非零值的 USE_B 再次加载它。我不确定如何执行此操作,如有任何帮助,我将不胜感激。

最佳答案

LoadLibrary/FreeLibrary 是运行时概念,#ifs 是编译时概念。如果你编译一个没有定义 #if 的模块,无论你如何加载或重新加载它,它都会保持原样。

定义两个类,一个是StringA一个也继承了 StringB .

然后向该类添加一个虚函数以使其成为多态的,并在运行时通过使用dynamic_cast<> 决定您想要这两个函数中的哪一个| .

关于c++ - 如何在库加载时将预处理器定义传递给 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com