[英]Exporting / Importing C++ Functions from Linux Dynamic Library / Linux Console App | Visual Studio Linux Projects
我想从Linux C ++ .so
共享对象库中导出全局C ++函数,并在Linux C ++ .out
应用程序中使用这些函数。
我看了一些在Linux开发环境中通常如何完成此操作的示例。 但是,我正在使用Visual Studio Linux项目和用于Linux开发的新Visual C ++扩展。 我相信我看到的示例中的许多步骤将由Visual Studio构建系统处理,因此在这种情况下情况似乎有些不同。
我在Visual Studio中创建了两个Linux C ++项目,一个空项目在属性和控制台应用程序中已更改为.so
。 我已经在控制台应用程序中引用了共享库。
共享库库项目有两个文件, functions.h
和functions.cpp
。
功能.h
#pragma once
void Function_01();
functions.cpp
#include functions.h
extern "C" void Function_01() {
return 0;
}
我已将functions.h
文件添加到使用中的控制台应用程序...
#include <cstdio>
#include "functions.h"
int main()
{
Function_01();
return 0;
}
也许导出全局函数似乎很奇怪,但是对于我的问题,这似乎是最自然的方法,我打算在库建立和链接后将函数包装在名称空间中。
我究竟做错了什么? 如何链接这些Visual C ++ for Linux Development项目并使用从共享库中导出的功能?
默认情况下会导出库函数,因此在使用gcc构建应用程序时,您只需在代码中调用它们并链接到库即可。 您的目标是看起来像这样的命令行:
g++ -o myprog myprog.cpp -lfunctions -L/home/test/projects/mylibs
哪里:
./myprog
从命令行运行 functions
是指您的共享库,该库是一个名为libfunctions.so的文件('lib'和'.so'会自动添加和添加) 在用于Linux开发的Visual C ++(VCLinux)中,您将在“链接器/输入/库依赖关系”下的项目设置中指定库的名称, functions
,以及在“链接器/常规/附加”下可以找到该库的文件夹的路径。图书馆目录。 也就是说,就像将DLL与Windows应用程序链接时一样。
VCLinux提供了Visual Studio用户熟悉的开发环境。 但是值得注意的是,虽然VCLinux生成了g ++命令来编译和链接您的应用程序,但是您所学到的关于使用gcc在Linux上构建应用程序的任何知识都非常适用。 尽管您现在可以跳过makefile章节。
另请注意,VCLinux仍在开发中。 关于调试共享库(尤其是使用测试控制台应用程序)的调试存在多个问题-有关更多信息,请参见VCLinux GitHub项目页面 。 我们鼓励您保持积极的态度,并提供建设性的反馈意见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.