函数实现可以不在同一个源文件中,怎么使用上述方法
时间: 2024-01-20 18:04:48 浏览: 57
栈的常用函数实现,头文件在另一个资源
如果函数实现不在同一个源文件中,您也可以使用上述方法导出函数,只需要在单独的源文件中包含所有头文件,并使用 `__declspec(dllexport)` 关键字导出函数即可。例如:
首先,在每个函数的头文件中声明函数,但不使用 `MYLIB_API` 宏。例如:
```cpp
// mylib1.h
int my_function1(int arg1, int arg2);
// mylib2.h
int my_function2(int arg1, int arg2);
```
然后,在一个单独的源文件中包含所有头文件,并使用 `__declspec(dllexport)` 关键字导出函数。例如:
```cpp
#include "mylib1.h"
#include "mylib2.h"
__declspec(dllexport) int my_function1(int arg1, int arg2);
__declspec(dllexport) int my_function2(int arg1, int arg2);
```
接下来,您需要将每个函数的实现分别放在不同的源文件中,例如:
```cpp
// mylib1.cpp
#include "mylib1.h"
int my_function1(int arg1, int arg2)
{
// ...
}
// mylib2.cpp
#include "mylib2.h"
int my_function2(int arg1, int arg2)
{
// ...
}
```
最后,将所有源文件编译成动态库即可。
需要注意的是,这种方法需要确保每个函数的实现在不同的源文件中,并且所有源文件都被编译成动态库。否则,如果某个函数的实现未被正确编译成动态库,那么它将无法被正确导出。
阅读全文