Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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++级代码 有一个R包,它定义了一些用于从zip文件中提取文件到C++中的STD::string的函数。我希望在我自己的包中使用这些函数,但我不能简单地链接到它们,因为头不在原始包的inst/include目录中_C++_R - Fatal编程技术网

使用另一个包中的少量C++级代码 有一个R包,它定义了一些用于从zip文件中提取文件到C++中的STD::string的函数。我希望在我自己的包中使用这些函数,但我不能简单地链接到它们,因为头不在原始包的inst/include目录中

使用另一个包中的少量C++级代码 有一个R包,它定义了一些用于从zip文件中提取文件到C++中的STD::string的函数。我希望在我自己的包中使用这些函数,但我不能简单地链接到它们,因为头不在原始包的inst/include目录中,c++,r,C++,R,我的问题是基于我的理解,C++级别的代码在包外是不可用的,除非标题在inst/include中 要使用代码,我的选项有: 请包维护器将C++头文件移到NST/IONE目录,这样我就可以用我的包将它从描述文件中调用。 复制并确认代码,这意味着将GPL-3许可证传播到我自己的软件包中 复制并毫无意义地修改代码以逃避版权 复制大约20行的代码,不要修改它,不要承认它,不要传播GPL-3许可证 创建一个单独的小程序包,使我想要的代码在inst/include中可用,承认原始作者,并将GPL-3许可证分发

我的问题是基于我的理解,C++级别的代码在包外是不可用的,除非标题在inst/include中

要使用代码,我的选项有:

请包维护器将C++头文件移到NST/IONE目录,这样我就可以用我的包将它从描述文件中调用。 复制并确认代码,这意味着将GPL-3许可证传播到我自己的软件包中

复制并毫无意义地修改代码以逃避版权

复制大约20行的代码,不要修改它,不要承认它,不要传播GPL-3许可证

创建一个单独的小程序包,使我想要的代码在inst/include中可用,承认原始作者,并将GPL-3许可证分发给自己,而不是分发给我的实际程序包,其中只包含它

还有其他选择吗?我误解了你的意思吗


澄清:我一点也不宽恕选项3和4,在我看来,它们是作弊。这就是问题所在。阅读答案的人现在会发现这样的事情被认为是作弊。但是,人们在做“正确的事情”时所考虑的事情比简单的导入更难:包,这就是为什么我包括了它们。

< P>唯一可行的选项是选项1和2。< /P> 如果R维护人员愿意根据GPL以外的许可证向您提供代码,选项1就可以工作。这当然意味着您将只针对该双重许可代码进行链接,而不是针对所有R

如果您愿意将GPL用于您的代码以及链接到该代码的所有代码,则选项2是有效的

选项3正是剽窃的定义,根本不是选项

选项4是可疑的、不道德的,而且由于您已经公开宣布了该选项,所以也有点难以实现


选项5不起作用,因为GPL也适用于单独的包,并且扩展后也适用于使用该包的所有代码。

唯一可行的选项是选项1和2

如果R维护人员愿意根据GPL以外的许可证向您提供代码,选项1就可以工作。这当然意味着您将只针对该双重许可代码进行链接,而不是针对所有R

如果您愿意将GPL用于您的代码以及链接到该代码的所有代码,则选项2是有效的

选项3正是剽窃的定义,根本不是选项

选项4是可疑的、不道德的,而且由于您已经公开宣布了该选项,所以也有点难以实现



选项5不起作用,因为GPL也适用于您的单独软件包,并且扩展后也适用于使用该软件包的所有代码。

如果您谈论的代码在GPL下,而不是LGPL下,那么你的代码也必须是GPL,即使你只包含一些东西。我投票把这个问题作为离题题来结束,因为这些都是好问题,但我认为,不适合StackOverflow。。。我建议……另外,毫无意义地修改代码以逃避版权实际上就是剽窃的定义。此外,考虑到你现在已经公开提到了这个选项,你很难在没有人注意的情况下逃避版权。询问包维护者是否有双重许可证/让您在不同的许可证下使用代码。BTW,您确信没有更多许可的C++或R库,您需要的功能吗?如果您所谈论的代码是GPL,而不是LGPL,那么你的代码也必须是GPL,即使你只包含一些东西。我投票把这个问题作为离题题来结束,因为这些都是好问题,但我认为,不适合StackOverflow。。。我建议……另外,毫无意义地修改代码以逃避版权实际上就是剽窃的定义。此外,考虑到你现在已经公开提到了这个选项,你很难在没有人注意的情况下逃避版权。询问软件包维护者是否有双重许可证/允许您在不同的许可证下使用代码。BTW,您确定没有更多许可的C++或R库,您需要的功能吗?好答案,并把它放好。如果我正确理解Dirk,即使选项1不起作用,因为GPL无论如何都是从R传播的。@nacnudus当维护人员将OP感兴趣的代码的相关部分以不同的许可证提供时,我的意思当然是暗示OP将只链接到该代码,而不是所有R。但这是一个很好的澄清点。更新我的answer@nacnudus这里的关键是a
你的代码+R的聚合在GPL下;你的代码本身并不一定是。确切的后果是复杂的,还没有在法庭上测试过,开源软件社区的人对此并不认同。然而,考虑到R软件包描述明确提到了许可证,我们可以假设R作者的意图是允许软件包使用GPL以外的许可证。回答得好,说得好。如果我正确理解Dirk,即使选项1也不起作用,因为GPL无论如何都是从R传播的。@nacnudus当维护人员将OP感兴趣的代码的相关部分以不同的许可证提供时,我的意思当然是暗示OP将只链接到该代码,而不是所有R。但这是一个很好的澄清点。更新我的answer@nacnudus这里的关键是代码+R的聚合在GPL下;你的代码本身并不一定是。确切的后果是复杂的,还没有在法庭上测试过,开源软件社区的人对此并不认同。然而,考虑到R包描述明确提到了许可证,我们可以假设R作者的意图是允许包使用GPL以外的许可证。