mixing c and c++
mixing c and c++
我有几个关于混合代码的问题:
-
一个基于c的完整项目,如果我想使用一个c++库,那么我用纯c代码围绕它创建一个包装器,然后构建共享库,我必须改为g++而不是gcc编译器吗?
-
如果包装器与库一起编译为静态库,该怎么办?
我很想知道您使用的库只有C++版本,而不是纯C接口。
无论如何,由于您将调用C++代码,因此您的包装器将被视为C++,并且需要使用g++进行编译。这与名称篡改有关,并且您需要能够调用c++库公开的那些函数。您可以使用readelf -s
查看它们。
但是,包装器公开的函数需要标记为extern "C"
,这样它们的名称就不会被破坏。然后,您将能够从纯C应用程序中调用它们。
静态库与共享库在这里并不重要。这只是生成正确符号的问题,这样链接就可以发生。
- 如何混合C和C++
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- libgphoto2 and Visual Studio 2019