2个回答
展开全部
简单的例子。
//shared_lib.hpp
#ifndef SHARED_LIBRARY
#define SHARED_LIBRARY
class TestClass
{
public:
TestClass();
~TestClass();
void test();
};
#endif
//shared_lib.cpp
#include "shared_lib.hpp"
#include <iostream>
TestClass::TestClass()
{
// nothing to do
std::cout << "constructor" << std::endl;
}
TestClass::~TestClass()
{
// nothing to do
std::cout << "destructor" << std::endl;
}
void TestClass::test()
{
std::cout << "Hello world!" << std::endl;
}
# 编译shared_lib.cpp为libexample.so(因为我是Linux下,所以编译成so,Windows下编译成dll)
# 我使用的编译指令是
gcc -Wall -g -std=c++0x -Wpedantic shared_lib.cpp -shared -fPIC -o libexample.so
就此得到动态链接库。
然后在另一个地方调用它。
//main.cpp
#include "shared_lib.hpp"
int main(int argc, char const *argv[])
{
TestClass t;
t.test();
return 0;
}
# 编译main.cpp为test
# 我使用的编译指令是
g++ -Wall -g -std=c++0x -Wpedantic main.cpp -L. -lexample -o test
# -Wall 表示启用所有警告和错误
# -g 表示添加debug用的信息
# -std=c++0x表示启用c++11标准特性
# -Wpedantic表示启用严格检查(所有不符合标准代码的都会被标识出来)
就此,我们得到了可执行文件test和动态链接库libexample.so。
同样的,Windows下的步骤也是类似的。只要在IDE或者编译指令中指定链接到动态链接库即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询