當前位置:首頁 » 編程語言 » c語言調用c靜態庫

c語言調用c靜態庫

發布時間: 2024-06-08 15:07:47

c語言vs怎麼使用自己做的靜態庫與動態庫,本人小白,請求詳解

1.靜態鏈接庫

打開VS2010,新建一個項目,選擇win32項目,點擊確定,選擇靜態庫這個選項,預編譯頭文件可選可不選。

在這個空項目中,添加一個.h文件和一個.cpp文件。名字我們起為static.h和static.cpp

static.h文件:

[cpp]view plain

  • #ifndefLIB_H

  • #defineLIB_H

  • extern"C"intsum(inta,intb);

  • #endif


  • static.cpp文件:
  • [cpp]view plain

  • #include"static.h"

  • intsum(inta,intb)

  • {

  • returna+b;

  • }

  • 編譯這個項目之後,會在debug文件夾下生成static.lib文件,這個就是我們需要的靜態鏈接庫。
  • 下面說明如何調用靜態鏈接庫。

    首先需要新建一個空項目,起名為test。將之前static項目下的static.h和static.lib這個2個文件復制到test項目的目錄下,並在工程中加入static.h文件。

    新建一個test.cpp文件如下:

    [cpp]view plain

  • #include<stdio.h>

  • #include<stdlib.h>

  • #include"static.h"

  • #pragmacomment(lib,"static.lib")

  • intmain()

  • {

  • printf("%d ",sum(1,2));

  • system("pause");

  • return0;

  • }

  • 編譯運行可得結果:3
  • #pragma comment(lib,"static.lib"),這一句是顯式的導入靜態鏈接庫。除此之外,還有其他的方法,比如通過設置路徑等等,這里不做介紹。

    2.動態鏈接庫

    和創建靜態鏈接庫一樣,需要創建一個空的win32項目,選擇dll選項。創建dynamic.cpp和dynamic.h文件

    dynamic.h文件:

    [cpp]view plain

  • #ifndefDYNAMIC

  • #defineDYNAMIC

  • extern"C"__declspec(dllexport)intsum(inta,intb);

  • #endifDYNAMIC


  • dynamic.cpp文件:

    [cpp]view plain

  • #include"dynamic.h"

  • intsum(inta,intb)

  • {

  • returna+b;

  • }

  • 編譯這個項目,會在debug文件夾下生成dynamic.dll文件。

  • 下面介紹如何調用動態鏈接庫,這里講的是顯式的調用。

    在剛才的test項目下,把static.lib和static.h文件刪除,把dynamic.h和dynamic.dll復制到該目錄下,並在項目中添加dynamic.h文件,修改test.cpp文件為:

    [cpp]view plain

  • #include<stdio.h>

  • #include<stdlib.h>

  • #include<Windows.h>

  • #include"dynamic.h"

  • intmain()

  • {

  • HINSTANCEhDll=NULL;

  • typedefint(*PSUM)(inta,intb);

  • PSUMpSum;

  • hDll=LoadLibrary(L"dynamic.dll");

  • pSum=(PSUM)GetProcAddress(hDll,"sum");

  • printf("%d ",pSum(1,2));

  • system("pause");

  • FreeLibrary(hDll);

  • return0;

  • }


  • 編譯運行結果為:3
  • 特別提示:

    1.extern "C"中的C是大寫,不是小寫

    2.如果從VS2010中直接運行程序,lib和dll需要放到test項目的目錄下;如果想雙擊項目test下的debug文件中的exe文件直接運行的話,需把lib和dll放入debug文件夾下。

Ⅱ 用C語言寫的程序能調用C++寫的靜態庫嗎

能。只要協議匹配的靜態庫不管什麼語言寫的都能用。

Ⅲ c語言調用庫函數用什麼命令

您好,很高興回答您的問題。
在c語言中,專門建立有一組需要經常使用、但是編寫起來不太簡單的函數,系統把這些功能載入到軟體內容。普通用戶所需要使用時,只需要按照規定輸入正確的調用語句,即可打開並運行謝謝文件。打開的格式為#include<對應文件名>,如打開輸入輸出函數為#include<stdio. h>。

Ⅳ C語言調用靜態庫顯示"不是內部或外部命令,也不是可運行的程序或批處理文件"

你通過VS調試運行程序的時候默認會去查找程序目錄下面的Debug中的和項目同名的exe文件(你的情況是TEST.exe)。因為你編譯失敗了,exe文件沒有生成所以找不到這個文件去執行。你目前的情況看來是你嘗試用C的編譯器去編譯C++代碼(因為你創建的是.c文件)所以失敗。把文件名改成cpp重新編譯再試

Ⅳ C語言 靜態庫之間可以相互調用么

可以的,天津lib和.h文件到項目,然後就可以調用。
但是必須有一個被動,一個主動,你不要搞成間接遞歸。

Ⅵ c語言如何 調用外部程序

調用外部程序介面

方法1.

Process p=Runtime.getRuntime.exec("cmd")(最常用)

方法2.

Process p=new ProcessBuilder(cmd).start()

但是一般方法一比較常用, 下面我們介紹下方法一中關於抽象Process類的常用函數

  • //向對應程序中輸入數據

  • ();

  • //獲得對應程序的輸出流(沒寫錯)

  • ();

  • //獲得程序的錯誤提示

  • ();

  • //等待程序執行完成,返回0正常,返回非0失敗

  • abstractpublicintwaitFor()throwsInterruptedException;

  • //獲得程序退出值,0正常退出,非0則異常

  • abstractpublicintexitValue();

  • //銷毀進程

  • abstractpublicvoiddestroy();

  • 其中前3個函數用的最多

熱點內容
開通了免密為什麼還要密碼 發布:2024-11-27 04:17:42 瀏覽:14
excel導入資料庫java 發布:2024-11-27 04:16:21 瀏覽:623
ps不能存儲bpm 發布:2024-11-27 04:04:12 瀏覽:612
jquery代碼加密 發布:2024-11-27 03:54:51 瀏覽:593
數字密碼人格是什麼原理 發布:2024-11-27 03:46:34 瀏覽:426
華為怎麼看手機的配置 發布:2024-11-27 03:27:42 瀏覽:381
php函數作用域 發布:2024-11-27 03:26:11 瀏覽:176
pythonasteval 發布:2024-11-27 03:21:14 瀏覽:563
電腦伺服器機什麼意思 發布:2024-11-27 03:18:59 瀏覽:837
本地存儲是否允許 發布:2024-11-27 03:08:02 瀏覽:411