㈠ c語言 用vs2010編寫dll 應該建立什麼工程啊如果需要下載工具包的話 去哪下載
不需要下載工具
只要你電腦安裝了framework即可
使用csc工具
命令csc
File.cs
編譯
File.cs
以產生
File.dll
主要要切換到目標的文件路徑
如果csc不可以使用
就把csc添加到環境變數(新建path
填入路徑為值)
㈡ c語言怎麼調用dll文件
1、新建DLLTest文件夾,在該文件夾中新建source文件夾。
注意事項:
C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
㈢ 怎麼在C#中添加用C語言開發的動態鏈接庫dll文件(vs2010)
總體來說,有兩種調用動態連接庫的方法
(事實上,是有兩種從managed code調用unmanaged code的方法)
一種使用Attribute,即
[DllImport("SomeDll.dll")]
static extern int SomeFunctionInDll(string filename, uint PageNo);
需引用命名空間
using System.Runtime.InteropServices;
另一種方法是採用COM方法,現倒入COM組件的類型庫,(Menu:Project/Add Reference)
然後直接去new對象,調用其方法既可。
需要先注冊
我用的大多都是c++的dll,c的木有試過,估計原理也是這樣子
希望對你有幫助,O(∩_∩)O~
㈣ 用C語言編寫DLL
使用微軟的vc或者vs,用c語言編程就是了。創建工程的時候會問你是創建什麼樣的工程,比如控制台程序,mfc程序,動態庫(dll)等。
c和c++只是編程語言,動態庫依賴於操作系統,在哪個平台下就依賴於哪個平台的動態庫生成工具。linux下是so文件,用gcc編譯器就可以生成。
㈤ 請問為什麼我用VS2015編程C語言調試的時候總是不成功,出現無法載入 mspdb140.dll
1. 找到VS2015 IDE的安裝目錄,以本人電腦上的目錄為例: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
2.將IDE目錄中的msobj140.dll, mspdb140.dll, mspdbcore.dll, mspdbsrv.exe四個文件復制到VC的bin目錄下覆蓋原有文件,以本人電腦為例VC/bin的目錄為:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
3.打開VS2015 新建一個C++的win32 控制台程序試一下是否還出現Link1171錯誤
4.如果還出現這個錯誤,請將VC/bin目錄加入到系統環境變數Path中用分號隔開,重啟計算機。
㈥ VS2015編輯C語言時出現這個,KernelBase.dll,已經設置了工具的選項,啟用了伺服器支持和符號伺服器
像這種情況,先看項目名稱如:測試。exe
再看執行命令如:已載入或已卸載
再看文件路徑如:C:windowssyswow64kernelbase.dll
最後看後面的進程提示如:已載入符號或無法查找或打開PDB文件
最後的一般都是執行結果和問題反饋
㈦ vs2010編的C語言程序,生成了可執行文件,可是為什麼在其他電腦上卻不能打開。提示是找不到MVCR.dll......
所有Visual Studio編譯的程序,只要你用到了C Runtime庫的函數,比如printf等最基本的標准函數,就會鏈接MSVCRxx.dll,裡面的xx是你編譯的Visual Studio的版本號。現在的問題就是你用的VS2010,很多計算機上沒有這個DLL,即使你編譯成Release版本(Debug版本需要更多的庫支持),依然會出現運行不了的情況。解決辦法是你可以靜態鏈接這些庫,這樣就不需要DLL支持,或者你讓目標計算機安裝Visual Studio 2010 Redistribute Package,這個包包含了VS2010編譯出來的程序需要的庫。
Redistribute Package的下載:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
簡短描述
Microsoft Visual C++ 2010 Redistributable Package 安裝 Visual C++ 庫的運行時組件,使用戶能夠在未安裝 Visual C++ 2010 的計算機上運行使用 Visual C++ 開發的應用程序。
㈧ 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文件:
#include"static.h"
intsum(inta,intb)
{
returna+b;
}
- 編譯這個項目之後,會在debug文件夾下生成static.lib文件,這個就是我們需要的靜態鏈接庫。
#include<stdio.h>
#include<stdlib.h>
#include"static.h"
#pragmacomment(lib,"static.lib")
intmain()
{
printf("%d ",sum(1,2));
system("pause");
return0;
}
- 編譯運行可得結果:3
#ifndefDYNAMIC
#defineDYNAMIC
extern"C"__declspec(dllexport)intsum(inta,intb);
#endifDYNAMIC
#include"dynamic.h"
intsum(inta,intb)
{
returna+b;
}
- 編譯這個項目,會在debug文件夾下生成dynamic.dll文件。
#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
[cpp]view plain
下面說明如何調用靜態鏈接庫。
首先需要新建一個空項目,起名為test。將之前static項目下的static.h和static.lib這個2個文件復制到test項目的目錄下,並在工程中加入static.h文件。
新建一個test.cpp文件如下:
[cpp]view plain
#pragma comment(lib,"static.lib"),這一句是顯式的導入靜態鏈接庫。除此之外,還有其他的方法,比如通過設置路徑等等,這里不做介紹。
2.動態鏈接庫
和創建靜態鏈接庫一樣,需要創建一個空的win32項目,選擇dll選項。創建dynamic.cpp和dynamic.h文件
dynamic.h文件:
[cpp]view plain
dynamic.cpp文件:
[cpp]view plain
下面介紹如何調用動態鏈接庫,這里講的是顯式的調用。
在剛才的test項目下,把static.lib和static.h文件刪除,把dynamic.h和dynamic.dll復制到該目錄下,並在項目中添加dynamic.h文件,修改test.cpp文件為:
[cpp]view plain
特別提示:
1.extern "C"中的C是大寫,不是小寫
2.如果從VS2010中直接運行程序,lib和dll需要放到test項目的目錄下;如果想雙擊項目test下的debug文件中的exe文件直接運行的話,需把lib和dll放入debug文件夾下。
㈨ vs2005,vs2008,vs2010編譯同一個c語言項目生成的dll文件為什麼不一樣大分別是252,380,246KB
優化方式和程度不有
不同的
編譯器
用的是可能是不同的優化方案(同一個編譯器不同的設置也會產生不同的結果,比如DeBug和Release)
優化方案取決於編譯器開發者的水平.發行編譯器時的
主流CPU
和編譯器將要運行的系統平台等因素,
比如DOS時代int_max=0xffff,
win32
時代int_max=0xffffffff,同樣是int變數,所佔用的內存空間就不同
再如同樣一條C語句:x=x+1;
早期的編譯器可能編譯成類似這樣的結果(這里用結果一詞而不用匯編語言,
匯編指令
,匯編代碼之類的詞是因為匯編=!
機器指令
)
mov
eax,x
add
eax,0x00000001
mov
x,eax
而優化的編譯器可能會把這條語句編譯成和
x+=1;
同樣的編譯結果:
mov
eax,x
inc
eax
//這條指令的執行速度和佔用內存的空間都要小
mov
x,eax
///////////////////////////////////////////////////////////////
類似的情況還有很多,因為這個回答是我一個字一個字打出來的,不是在哪個地方Copy的,指所以就不一一列舉了,總之:
這些小的差別積少成多,就影響了文件的大小!
㈩ 怎麼在C#中添加用C語言開發的動態鏈接庫dll文件(vs2010)
在c#類里添加[DllImport("dll名.dll")]即可:
比如我用c開發了一個testdll.dll的dll文件,則我在c#類的構造函數前可以添加[DllImport("testdll.dll")],就把c開發的動態鏈接庫添加進了c#項目里。