gpt4 book ai didi

c++ - LNK4221 和 LNK4006 警告

转载 作者:行者123 更新时间:2023-11-30 03:11:07 27 4
gpt4 key购买 nike

我正在制作自己的静态库。我已经使用了我的代码,现在将它放入一个静态库中供另一个程序使用。在我的库中,我使用了另一个静态库,我不想让将要使用我的 API 的人知道。因为,我想对他们隐藏这些信息,所以我不能告诉他们安装其他静态库。 无论如何,我使用命令行 Lib.exe 来提取和创建一个较小的 lib 文件,该文件仅包含我使用的 obj。但是,对于我使用的每个对象,我收到一堆 LNK4006 :second definition ignored 链接器警告,后跟 LNK4221 no public symbols found;archive member will be accessible

我在 vs2008 中做这项工作,我不确定我做错了什么。我在 .cpp 文件中使用 #pragma comment 行我还修改了图书管理员以添加我的较小的 .lib 及其位置。我的代码只是调用了几个函数,它应该能够从较小的库中的那些 Obj 文件中获取这些函数。我所有的函数都在 .cpp 文件中实现,我的头文件只包含第三方头文件和标准 c++ 头文件。没有什么花哨。我实际上在 atm 中没有函数定义。我打算将 API 定义放在那里,并在我要创建的静态库的 .cpp 中实现它。但是,我只想在添加更多代码之前构建我的代码。

我读过 http://support.microsoft.com/default.aspx?scid=kb;EN-US;815773但并未提供解决方案。

最佳答案

即使您从其他库中提取所有对象并将它们放入您自己的库中,您的用户仍将能够看到您的库中的内容,从而看到所有对象名称。在许多情况下,对象的名称会揭示您正在使用的其他库的实际内容。

与其将您的库作为静态库分发,不如考虑将其作为 DLL 分发。在 DLL 中,您可以轻松地隐藏所有底层的东西,只公开您想要公开的内容。

关于c++ - LNK4221 和 LNK4006 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2496293/

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