Dll
生成
dll.cpp:
extern "C" __declspec(dllexport) int Add(int val1, int val2){
return val1 + val2;
}
extern "C" __declspec(dllexport) int Mult(int val1, int val2){
return val1 * val2;
}
vs在创建正常的项目后,将项目属性=>配置属性=>常规=>配置类型改为动态库.dll,即生成dll文件即可
使用
use.c
#include <iostream>
#include <windows.h>
int main() {
HINSTANCE MeDll = LoadLibrary("CreateDLL.dll");
if (MeDll == NULL) {
std::cout << "Can't Open Dll" << std::endl;
return 0;
}
int (*Add)(int, int) = (int (*)(int, int))GetProcAddress(MeDll, "Add");
std::cout << Add(10, 20) << std::endl;
return 0;
}
将dll.cpp生成的dll文件移动到ues.cpp项目下,即可.如果LoadLibrary的参数提示const char*与LPCWSTR不兼容等,可以将项目属性=>配置属性=>高级=>字符集改为"使用多字节字符集"vs2022是这个设置路径,如有不对,请自行寻找设置路径
So
生成
so.c
#include <stdio.h>
void Print(){
printf("This is .so\n");
}
编译命令
gcc -fPIC -shared -o libmeso.so so.c
将编译出的libmeso.so拷贝到/usr/lib
使用
use.c
void Print();
int main(){
Print();
return 0;
}
编译命令
gcc -o use use.c -L. -lmeso