1. 程式人生 > >VS2017——C語言dll編譯並呼叫

VS2017——C語言dll編譯並呼叫

1.生成dll

1.1檔案——新建——專案,選擇如下圖



1.2新建標頭檔案test.h和原始檔test.c

//test.h
__declspec(dllexport) int sum(int a, int b);
//test.c
#include "test.h"
#include <stdio.h>

int sum(int a, int b) {
	return a + b;
}



1.3右擊專案選擇生成,在debug中會產生多個檔案,我們只需要dllgen.dll和dllgen.lib


2.呼叫dll

2.1檔案——新建——專案——空專案
2.2將dllgen工程中的test.h、dllgen.dll、dllgen.lib拷貝到當前工程下

2.3在工程中新增test.h,同時新建main.c
//main.c
#include "test.h"
#include<stdio.h>
#include<stdlib.h>

#pragma comment(lib,"dllgen.lib")

void main() {
	int n;
	n = sum(10, 6);
	printf("10 + 6 = %d\n",n);
	system("pause");
}
2.4執行專案,檢視測試結果

相關推薦

VS2017——C語言dll編譯呼叫

1.生成dll 1.1檔案——新建——專案,選擇如下圖 1.2新建標頭檔案test.h和原始檔test.c //test.h __declspec(dllexport) int sum(int a, int b); //test.c #include "test.

[轉]在C#中呼叫C語言函式(靜態呼叫Native DLL,Windows & Microsoft.Net平臺)

原文:https://blog.csdn.net/yapingxin/article/details/7288325   對於不太瞭解.Net的人,如果想要了解.Net,我必須給他介紹P/Invoke。P/Invoke是什麼呢?簡單地說,就是在.Net中呼叫原生代碼(Native code)的一

如何使用emacs編寫c語言程式,編譯執行之

vi和emacs被分別被稱為編輯器之神和神之編輯器。vi的入門精通都很難,emacs入門容易,精通難;vi使用起來不停地切換模式,而emacs則不停地ctrl,meta等組合鍵。因此,高德納大師說操作

編譯C#的dll檔案修改,再重新生成dll

前話:自從換了份工作,著重於JAVA底層介面服務開發,就很少寫部落格文章了,一來事情比較忙,二來封閉式的開發讓我不能時刻把新的技術問題解決方案寫下來。 今天公司一個C#的專案svn上程式碼不是最新的,程式碼編寫人又離職了,只能把已編譯且下在使用的dll檔案取下來,反編譯後再

下載安裝MinGW配置C語言編譯環境寫一個簡單的C語言程式HelloWorld

一、下載安裝MinGW1、MinGW簡介        MinGW即Minimalist GNU for Windows,是一個簡單Windows本地應用的開發環境。MinGW包含有一組GNU編譯器的集合(包含有C,C++,ADA和Fortran的編譯器)以及Windows下

C語言之歸排序

ack trac for pos 語言 font tex 合並 %d 即將兩個都升序(或降序)排列的數據序列合並成一個仍按原序排列的序列。 上代碼: #include <stdio.h> #include <stdlib.h> #defin

C語言/原子/編譯,你真的明白了嗎?

clas done ati pre 內存 程序 導致 裏的 creat   說到原子,類似於以下的代碼可能人人都可以看出貓膩。 #include <stdio.h> #include <pthread.h> int cnt = 0;

C語言:歸排序

tar merge ret void class while std stdio.h 歸並排序 歸並排序(C語言)。 先上代碼,理論會後面一起總結。 1. 遞歸 2. 非遞歸 #include <stdio.h> #include <stdlib.h

14.c語言dll註入

spec pan main函數 windows.h 需要 接口 blog gpo message 1 #include <Windows.h> 2 3 //dll不需要main函數 4 //導出接口 5 _declspec(dllexport) void g

C語言編譯預處理

wall shadow c程序 方式 共享庫 blog gcc編譯 程序員 proc 1、C程序的過程 處理流程: 靜態鏈接與動態鏈接: 鏈接可以分為靜態鏈接(靜態庫)與動態鏈接(共享庫):?靜態庫是代碼的歸檔,在使用靜態庫時是采用的復制代碼的方式。共享庫是可執行文件的組

# C語言匯入資料庫備份

/// /// MrTom /// Oracle資料庫備份 /// private void OracleBackUp() { //建立一個程序例項 Process p = new Process(); //生成備份檔案的檔名稱 string filename = “E:\DataNam

C語言常見的函式呼叫

C語言常見的函式呼叫 isatty,函式名,主要功能是檢查裝置型別,判斷檔案描述詞是否為終端機。 函式名: isatty 用 法: int isatty(int desc); 返回值:如果引數desc所代表的檔案描述詞為一終端機則返回1,否則返回0。 程式例: #include <s

c語言 條件編譯

1.#if #elif #else #endif #if 條件1 {程式碼段} #elif 條件2 {程式碼段} … #else {程式碼段n+1} #endif 2.條件編譯的另一種方法是用

分析簡單的c語言函式編譯得到的X86彙編程式碼(VS2013)

檢視原始碼生成的彙編程式碼:單步除錯->除錯->視窗->反彙編   總結: ①、函式被呼叫時,實參值賦值給函式棧中的形參,使用以下步驟:        I、call函式前實參值壓棧    &n

C語言-條件編譯使用分析

world! 當前 turn 技術分享 col mat cor == delet 1、基本概念   條件編譯的行為類似於C語言中的if…else…   條件編譯是預編譯指示命令,用於控制是否編譯某段代碼 2、實例分析 條件編譯初探 22-1.c 1 #incl

ARM基礎:為何C語言(的函式呼叫)需要堆疊,而組合語言卻不需要堆疊

https://www.cnblogs.com/liuchengchuxiao/p/4113233.html 為何C語言(的函式呼叫)需要堆疊,而組合語言卻不需要堆疊 之前看了很多關於uboot的分析,其中就有說要為C語言的執行,準備好堆疊。 而自己在Uboot的start.S彙編程

python呼叫c++寫的dll時遇到坑(主要是c++的dll裡面又呼叫c#的dll

1、python呼叫純c++寫的dll時,直接用下面程式碼就好。  from ctypes import * dll = CDLL('DcDll.dll') 原本以為就算是c++的dll呼叫了c#的dll,應該和原來直接呼叫c++寫的dll一樣,可是事實不是的。只要一執

C語言——預編譯

C語言——預編譯 宗旨:技術的學習是有限的,分享的精神是無限的。         在C 語言中,並沒有任何內在的機制來完成如下一些功能:在編譯時包含其他原始檔、定義巨集、根據條件決定編譯時是否包含某些程式碼。要完成這些工作,就需要使用預處理程式。儘管在目前絕大多數編譯器

C語言條件編譯(#if,#ifdef,#ifndef,#endif,#else,#elif)

1、條件編譯介紹 條件編譯(conditional compiling)命令指定前處理器依據特定的條件來判斷保留或刪除某段原始碼。例如,可以使用條件編譯讓原始碼適用於不同的目標系統,而不需要管理該原始碼的各種不同版本。 條件編譯區域以 #if、#ifdef 或 #ifndef 等命令作為開頭,以

c++語言 linux編譯通過,windows編譯不通過。

bool operator<(Human& man)// 需要修改為 bool operator<(const Human& man) const { return Human.age < man.age; } #include<stdio.h&g