vs2017 编译C++ 生成linux下可运行的.out文件

本文介绍如何使用Visual Studio 2017创建并配置Linux工程,包括设置必要的头文件路径、.so和.a文件的位置,以及解决运行时找不到.so文件的问题。

vs2017 增加了创建linux 工程的功能。具体步骤如下

在跨平台下创建Linux工程

 

 

创建完工程后开始配置项目

设置工程所需的include文件的路径

 

设置.so文件所在的路径

 

设置依赖的.so文件, 因为vs2017是调用远程的g++来编译,所以此处的库名也要去掉前缀名和后缀名

 

设置所需的.a文件,文件要包含绝对路径

 

编译成功后运行可能会提示找不到.so文件,在 /etc/ld.so.conf.d 路径下新建一个 .conf文件,如 usr.conf,在添加的.conf文件中加入自己.so文件的所在的绝对路径,终端输入 sudo ldconfig 来更新就好了

在Windows的VS2017编译C++代码以生成Linux可运行的动态库,并非生成`.out`文件Linux动态库的扩展名通常是`.so` 。以下是具体步骤: ### 1. 安装相关组件 在VS2017中,通过“Visual Studio安装程序”添加“使用C++Linux开发”工作负载。此工作负载包含了编译和调试Linux应用所需的工具和组件。 ### 2. 创建Linux项目 打开VS2017,创建一个新的“Linux C++动态链接库”项目。在“创建新项目”对话框中,选择“Visual C++” -> “跨平台” -> “Linux”,然后选择“动态链接库 (Linux)”模板。 ### 3. 配置项目属性 - **远程调试器连接**:在解决方案资源管理器中,右键单击项目,选择“属性”。在“配置属性” -> “调试” -> “远程调试器连接”中,配置与Linux目标系统的连接信息,包括主机名、用户名和密码等。 - **C++编译器选项**:在“配置属性” -> “C/C++” -> “常规”中,可根据需要调整C++语言标准等选项。 - **链接器选项**:在“配置属性” -> “链接器” -> “常规”中,确保输出文件类型为动态库。 ### 4. 编写C++代码 在项目中编写C++代码,示例如下: ```cpp // example.cpp #include <iostream> extern "C" { void hello() { std::cout << "Hello from dynamic library!" << std::endl; } } ``` ### 5. 编译项目 点击“生成” -> “生成解决方案”,VS2017会将代码通过SSH发送到Linux目标系统进行编译编译成功后,会在指定的输出目录生成`.so`动态库文件。 ### 6. 部署和测试 - **部署**:将生成的`.so`文件复制到Linux系统的合适目录,例如`/usr/local/lib` 。 - **测试**:在Linux系统上编写一个简单的测试程序,链接该动态库并运行,以验证动态库是否正常工作。 ```cpp // test.cpp #include <iostream> #include <dlfcn.h> int main() { void* handle = dlopen("./libexample.so", RTLD_LAZY); if (!handle) { std::cerr << "Failed to open library: " << dlerror() << std::endl; return 1; } typedef void (*HelloFunction)(); HelloFunction hello = (HelloFunction)dlsym(handle, "hello"); if (!hello) { std::cerr << "Failed to find symbol: " << dlerror() << std::endl; dlclose(handle); return 1; } hello(); dlclose(handle); return 0; } ``` 编译测试程序: ```sh g++ -o test test.cpp -ldl ``` 运行测试程序: ```sh ./test ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值