codeblocks中創建和調用靜態鏈接庫(lib)

在學習《多平臺應用與開發》的過程中,遇到了靜態鏈接庫和動態鏈接庫的學習,剛開始完全不知道講的是什麼,於是花了一個下午查閱資料、動手實驗,終於對它有了一點基本的瞭解,所以特意花點時間整理一下。

ps:靜態庫  (擴展名爲 .a 或 .lib) 是包含函數的文件,用於在link階段整合執行程序,動態鏈接庫(擴展名  .dll)是不在link階段整合進執行程序中的。DLL文件在執行階段動態調用。


一、創建C語言靜態鏈接庫

1.建立。

File->New->Projects->Static library->Go

給項目命名爲:static library

將main.c中的代碼修改爲:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int pow2(int a)
{
    return a*a;
}

void upstr(char *str, char *s)
{
    int i;
    for(i = 0; i < strlen(str); i++)
    {
        if(str[i] >= 'a' && str[i] <= 'z')
            s[i] = str[i] - 'a' + 'A';
        else
            s[i] = str[i];
    }
    s[i] = '\0';
}

2.編譯(Build)。

編譯完成後找到該project的的目錄文件,打開static library/bin/Debug 這時可以看到生成的libstatic library.a文件(Visual Studio中的後綴爲".lib")。


二、調用靜態鏈接庫

1.創建win32項目

File->New->Projects->Win32 GUI project->Go

給項目命名爲:test_lib

將main.cpp中的代碼修改爲:

#include <windows.h>

extern "C"
{
    int pow2(int a);
    void upstr(char *str, char *s);
}

int APIENTRY WinMain(HINSTANCE h1,HINSTANCE h2,LPSTR l,int n)
{
    int x = 2;
    char str[30]={"static library _win32"};
    int t = pow2(x);
    char *s = (char*)malloc(sizeof(strlen(str)));
    upstr(str, s);
    if(t == 4)
        MessageBox(NULL, s ,TEXT("靜態鏈接庫測試"), MB_OK);
    else
        MessageBox(NULL, TEXT("error!!!") ,TEXT("靜態鏈接庫測試"), MB_OK);
    return 0;
}


2.添加libstatic library.a庫文件

通常, Codeblocks並不知道庫文件被使用和它的位置,我們必須聲明庫文件,讓它在鏈接的時候不會出錯。

選擇菜單Settings->Compiler->Linker settings->Add 添加libstatic library.a庫文件。



3.編譯運行

添加完成後就可以編譯運行了,運行結果如下。




至此,就完成了靜態鏈接庫的創建和調用。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章