C语言外部程序调用函数
时间: 2023-09-12 08:02:43 浏览: 168
在C语言中,可以通过外部程序调用函数。常见的方法有两种:
1. 使用动态链接库(DLL)进行调用
动态链接库是一种可执行文件,它包含了一些函数供其他程序调用。在C语言中,可以使用Windows API函数LoadLibrary()和GetProcAddress()来加载并获取DLL中的函数指针,然后通过函数指针调用DLL中的函数。
例如,以下代码演示了如何调用Windows系统的MessageBox()函数:
```
#include <windows.h>
int main() {
HMODULE hLib = LoadLibrary("user32.dll");
if (hLib != NULL) {
typedef int (WINAPI *MsgBoxFn)(HWND, LPCSTR, LPCSTR, UINT);
MsgBoxFn pMsgBox = (MsgBoxFn)GetProcAddress(hLib, "MessageBoxA");
if (pMsgBox != NULL) {
pMsgBox(NULL, "Hello", "Hello World", MB_OK);
}
FreeLibrary(hLib);
}
return 0;
}
```
2. 使用静态链接库(LIB)进行调用
静态链接库是一种编译好的库文件,它包含了一些函数供其他程序调用。在C语言中,可以通过将静态链接库文件链接到自己的程序中,然后直接调用其中的函数。
例如,以下代码演示了如何调用OpenSSL库中的MD5()函数:
```
#include <openssl/md5.h>
int main() {
unsigned char digest[MD5_DIGEST_LENGTH];
MD5("Hello", 5, digest);
return 0;
}
```
在编译时,需要将OpenSSL库链接到程序中:
```
gcc main.c -o main -lssl -lcrypto
```
其中,-lssl和-lcrypto参数告诉编译器链接OpenSSL库。
阅读全文