1. 編寫dll文件!
1.在程序前面加一行代碼
#pragma comment(linker,"/dll")
意思是告訴連接器 輸出的是dll格式。這個好處是不用手動去修改工程屬性。
2.或者vc編譯器
新建工程,選擇dll工程,然後將你的示範cpp替換他原先的cpp。這樣vc會自動設置連接器屬性,其中包括輸出dll
3.或者手動去修改工程屬性,找到輸出格式那裡,將exe換成dll
建議:用第一個方法吧,看著專業點,用起來也簡單。 其中dll編程不是光輸出一個dll格式的東西就算完了,因為你用的示範代碼,所以不會存在額外問題了。如果你要自己寫,還要注意下mian函數入口的名稱,以及導入導出函數的格式寫法。孫鑫視頻確實有章講的這方面,挺清晰。一般 windos編程教程書也會寫dll編程部分,樓主要是想深究可以去查閱下。
其實dll編程 就多了一丁點東西而已,不是很復雜。
2. 易語言怎麼寫dll呢
你好,這個問題很好實現的。
請按以下步驟操作
1、打開易語言
2、新建 - Windows動態鏈接庫
3、在程序集1處新建一個子程序並且命名,同時要把該子程序的公開選項打勾
4、在子程序中寫DLL的代碼。
5、靜態編譯成DLL文件。
如果還不懂的話可在網路搜一下易語言DLL製作。一大堆的教程常式。
希望我的回答對你有所幫助!Kiss灬小豬
3. C++寫DLL易語言調用問題
在dll.def文件寫
EXPORTS
add
在dll.cpp文件寫
int _stdcall add(int a, int b)
{
return a+b;
}
在易語言中插入dll命令
.版本 2
.DLL命令 DLL命令1, 整數型, "dll.dll", "add"
.參數 a, 整數型
.參數 b, 整數型
4. C++ win32生成DLL文件供其他程序調用該怎麼生成求步驟
如果你使用的是VISUAL STUDIO
1、從「文件」菜單中,選擇「新建」,然後選擇「項目…」。
2、從「項目類型」窗格中選擇「Visual C++」下的「Win32」。
3、從「模板」窗格中,選擇「Win32 控制台應用程序」。
4、為項目選擇一個名稱,如「MathFuncsDll」,並將其輸入「名稱」欄位。為解決方案選擇一個名稱,如「DynamicLibrary」,並將其輸入「解決方案名稱」欄位。
5、按「確定」啟動 Win32 應用程序向導。在「Win32 應用程序向導」對話框的「概述」頁中,按「下一步」。
6、從「Win32 應用程序向導」中的「應用程序設置」頁中,選擇「應用程序類型」下的「DLL」(如果可用),或者選擇「控制台應用程序」(如果「DLL」不可用)。某些版本的 Visual Studio 不支持使用向導創建 DLL 項目。您可以稍後對此進行更改,以將項目編譯為 DLL。
7、從「Win32 應用程序向導」的「應用程序設置」頁中,選擇「附加選項」下的「空項目」。
VC6.0下
1、編寫非MFC的DLL庫
(1) VC6.0下建立Win32 Dynalmic-Link Library工程mydll。
(2)工程下創建一個mydll.h頭文件和mydll.cpp實現文件。
mydll.h頭文件如下:
#ifndef MYDLL_H#define MYDLL_H
#ifdef DLL#define EXTERN extern "C" _declspec(dllexport)#else#define EXTERN extern "C" _declspec(dllimport)#endif
EXTERN int myadd(int, int);
#endif
mydll.cpp實現文件如下:
#define DLL#include "mydll.h"
int myadd(int a, int b){ return a+b;}
(3)編譯生成DLL動態庫mydll.dll
2、創建一個調用DLL庫的應用程序testapp
(1)在VC6.0下建立Win32 Console Application工程,在下一步選擇簡單應用程序。
(2)修改testapp.cpp文件,實現調用mydll.dll動態庫中的函數myadd。實現如下:
#include "stdafx.h"#include <stdio.h>#include <windows.h>typedef int (*padd)(int, int);
int main(int argc, char* argv[]){ HINSTANCE handle = ::LoadLibrary("../../mydll/debug/mydll.dll");//mydll.dll動態庫路徑 if(handle != NULL) { padd pf = (padd)GetProcAddress(handle,"myadd"); if(pf != NULL) { printf("dll myadd(3,2) = %d", pf(3,2)); }
::FreeLibrary(handle);
} return 0;}
(3)編譯生成exe應用程序testapp.exe。
(4)運行testapp.exe,結果如下:
dll myadd(3,2) = 5
5. 易語言API和DLL教程!
說白了 DLL就是API API就是DLL 你首先不要管DLL是什麼 API是什麼 等你會用後在去簡單 記住簡單的了解下 他們的性質有哪些不同 其實用法是一樣的 如果你一開始就去深度了解API,和DLL 那樣只能是吧問題搞成復雜化
DLL是好比是個封裝的程序,需要調用才能使用
API我們可以這樣理解是系統自帶的一個DLL 懂了吧 你只要了解DLL API 就差不多了解了 前面已經說到了 你不要管他們2個是什麼意思 先要會用
易語言里的DLL文件名:是可以自定義的,你可以隨便改名字,返回類型它(API.DLL)本身返回的是什麼類型就寫什麼類型.
易語言里的DLL庫文件名:就是(API.DLL)的名字,就好比是編譯出來的程序的名字
易語言里的DLL庫中對應的文件名:就是(API.DLL)裡面的子程序名字。
首先怎麼寫DLL 我告訴你怎麼寫 給個源碼你 上面標示的很清楚
6. 有沒有c#的關於.dll文件製作的書籍或視頻
一、寫在前面
C# 語言是一種簡單但功能強大的編程語言,用於編寫企業應用程序。
C# 語言從C和 C++語言演化而來,在語句、表達式和運算符方面使用了許多 C++ 功能。
C# 語言在類型安全性、版本轉換、事件和垃圾回收等方面進行了相當大的改進和創新。
C# 語言提供對常用 API 樣式(如 .NET 框架、COM、自動化和 C 樣式 API 等)的訪問。
什麼是動態鏈接庫?DLL三個字母對於你來說一定很熟悉吧,它是Dynamic Link Library 的縮寫形式,動態鏈接庫 (DLL) 是作為共享函數庫的可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬於其可執行代碼的函數。函數的可執行代碼位於一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接並與使用它們的進程分開存儲的函數。DLL 還有助於共享數據和資源。多個應用程序可同時訪問內存中單個 DLL 副本的內容。
和大多數程序員一樣,你一定很使用過DLL吧。也曾感受到它的帶給你程序設計和編碼上的好錯吧今天我想和大家探討一個主題:如何在C#創建和調用DLL(動態鏈接庫), 其實在很大意義上而講,DLL讓我更靈活的組織編寫我們的應用程序,作為軟體設計者,可一個根據它來達到很高的代碼重用效果。下面我來介紹一下在C#中如何創建和調用DLL。
二、准備工作
我們需要對我們接下來要做的事情做個簡單的介紹,在本文我們將利用C#語言創建一個名為 MyDLL.DLL的動態鏈接庫,在這個動態鏈接庫文件中我們將提供兩個功能一個是對兩個參數交換他們的值,另一個功能是求兩個參數的最大公約數。然後創建一個應用程序使用這個DLL。運行並輸出結果。
三、創建DLL
讓我們創建以下三個C#代碼文件:
1、 MySwap.cs
using System;
namespace MyMethods
{
public class SwapClass
{
public static bool Swap(ref long i,ref long j)
{
i = i+j;
j = i-j;
i = i-j;
return true;
}
}
}
2、 MyMaxCD.cs
using System;
namespace MyMethods
{
public class MaxCDClass
{
public static long MaxCD(long i, long j)
{
long a,b,temp;
if(i>j)
{
a = i;
b = j;
}
else
{
b = i;
a = j;
}
temp = a % b;
while(temp!=0)
{
a = b;
b = temp;
temp = a % b;
}
return b;
}
}
}
}需要注意的是:我們在製作這兩個文件的時候可以用Visual Studio.NET或者其他的文本編輯器,就算是記事本也可以。這兩個文件雖然不在同一個文件裡面,但是他們是屬於同一個namespace(名稱空間)這對以後我們使用這兩個方法提供了方便。當然他們也可以屬於不同的名稱空間,這是完全可以的,但只是在我們應用他們的時候就需要引用兩個不同的名稱空間,所以作者建議還是寫在一個名稱空間下面比較好。
接下來的任務是把這兩個cs文件變成我們需要的DLL文件。方法是這樣的:
在安裝了Microsoft.NET Framework的操作系統上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。在這個目錄下面提供了C#的編譯器,CSC.EXE
運行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs
完成後可在本目錄下面找到我們剛才生成的MyDLL.DLL文件
/target:library 編譯器選項通知編譯器輸出 DLL 文件而不是 EXE 文件。後跟文件名的 /out 編譯器選項用於指定 DLL 文件名。
如果/out後面不跟文件名編譯器使用第一個文件 (MySwap.cs) 作為 DLL 文件名。生成的文件為MySwap.DLL文件
OK!我們創建動態鏈接庫文件的任務完成了,現在是我們享受勞動成果的時候了,下面我將介紹如何使用我們所創建的動態鏈接庫文件。
四、 使用DLL
我們簡單寫一個小程序來測試一下我們剛才寫的兩個方法是否正確,好吧,跟我來:
MyClient.cs
using System;
using MyMethods;
//這里我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間
class MyClient
{
public static void Main(string[] args)
{
if (args.Length != 2)
{
Console.WriteLine("Usage: MyClient <num1> <num2>");
return;
}
long num1 = long.Parse(args[0]);
long num2 = long.Parse(args[1]);
SwapClass.Swap(ref num1,ref num2);
// 請注意,文件開頭的 using 指令使您得以在編譯時使用未限定的類名來引用 DLL 方法
Console.WriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2);
long maxcd = MaxCDClass.MaxCD(num1,num2);
Console.WriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd);
}
}
若要生成可執行文件 MyClient.exe,請使用以下命令行:
csc /out:MyClient.exe /reference:MyLibrary.DLL MyClient.cs
/out 編譯器選項通知編譯器輸出 EXE 文件並且指定輸出文件名 (MyClient.exe)。/reference 編譯器選項指定該程序所引用的 DLL 文件。
五、執行
若要運行程序,請輸入 EXE 文件的名稱,文件名的後面跟兩個數字,例如:
MyClient 123 456
六、輸出
The result of swap is num1 = 456 and num2 = 123
The MaxCD of 456 and 123 is 3
第二種方法:用vs2005 製作類庫
在新建里選擇類型是類庫,呵呵,然後你就寫類啊,寫好後生成就就行,生成的dll在Debug文件夾里
7. VB寫應用程序DLL的教程
在網上找到這個軟體
Banasoft
Make
Expert
安裝後插件後,你寫的DLL可以被其他語言訪問(比如VC),具體用法看看使用說明。
8. 易語言dll注入教程
.版本2
.支持庫shell
.支持庫spec
.程序集窗口程序集1
.程序集變數輸入法句柄
.子程序__啟動窗口_創建完畢
熱鍵.注冊(_啟動窗口.取窗口句柄(),,#Home鍵,&子程序1)
.子程序子程序1
.局部變數bool,邏輯型
bool=進程是否存在(「DNF.exe」)
.如果真(bool)
輸入法.激活(取句柄2(「DNF.exe」,,),輸入法句柄)
.如果真結束
.子程序輸入法注DLL
寫到文件(取特定目錄(10)+「SouGoo.ime」,#Shurufa)
輸入法句柄=輸入法.安裝(取特定目錄(10)+「SouGoo.ime」,「JSCK專用注入」)
調試輸出(輸入法句柄)
.如果真(輸入法句柄≠0)
輸入法.設置注入(取特定目錄(10)+「Sougoo.ime」,路徑編輯框.內容)
信息框(「------------載入成功------------」+#換行符+「請用Home呼出外掛」+#換行符+「------呼不出來請用Ctrl+Shift切換輸入法呼出------」,#信息圖標,「系統信息」)
窗口禁止關閉(_啟動窗口.取窗口句柄(),真)
.如果真結束
.子程序_按鈕1_被單擊
.局部變數bool,邏輯型
bool=通用對話框1.打開()
.如果(bool)
路徑編輯框.內容=通用對話框1.文件名
輸入法注DLL()
.否則
信息框(「請選擇一個DLL文件!」,#信息圖標,「系統信息」)
.如果結束
.子程序_按鈕2_被單擊
.局部變數bool,邏輯型
輸入法.清除注入(取特定目錄(10)+「Sougoo.ime」)
bool=輸入法.卸載(輸入法句柄)
.如果(bool)
信息框(「卸載成功!」,#信息圖標,「系統信息」)
.否則
信息框(「卸載失敗!」,#信息圖標,「系統信息」)
.如果結束
窗口禁止關閉(_啟動窗口.取窗口句柄(),假)
.子程序__啟動窗口_將被銷毀
輸入法.清除注入(取特定目錄(10)+「Sougoo.ime」)
輸入法.卸載(輸入法句柄)
9. VB 怎麼編寫DLL
編寫API類型的DLL請看我後面的哪個文章,不明白的可以網路HI我,我實驗成功了
1-4問題,原因是ActiveX DLL 本質是一個控制項,所以你使用它就必須像使用控制項一樣引用,才可以
5、可以,但是這樣DLL很難封裝API一類的函數,有點類似於自定義控制項的效果。
6、可以,見下面的文章
怎樣用VB編寫.DLL動態鏈接庫文件
VB中創建的DLL只是COM組件,無法作為輸出函數的DLL,其實這只是個錯誤的說法。其實MS非常狡猾,如果你是個VB瘋狂發燒友的話,應該早就狂試出這種可以創建輸出函數的DLL的方法。
VB編譯文件實際上採取了兩次編譯的方法,首先是調用C2.exe產生*.OBJ文件,然後調用Link.EXE連接。如果在LINK的時候添加EXPORT選項,實際上是可以輸出函數的。但是,在VB的工程選項中將這些屏蔽了。而且過分的是:VB在Build完成後會將OBJ文件刪除,這樣就無法手動通過Link來創建我們需要的DLL了。不過我找到一個比較齷鹺的變通的方法,就是先創建一個Exe工程,在Form_Load事件裡面寫下面的語句:
Sub Main
If MsgBox("哈哈", vbOKCancel) = vbOK Then
Shell "link2.exe " & Command$
End If
End Sub
然後編譯為LinkTemp.EXE,接下來將LINK.EXE改名為Link2.exe,將LinkTemp.EXE改名為Link.EXE。這樣在VB調用Link.EXE時會彈出對話框,處理就會中斷。這時就可以有機會將OBJ文件拷貝出來了。
然後我創建了一個ActiveX DLL工程,在這個工程裡面添加一個Mole並創建一個Public函數mathadd:
Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long
mathadd = a + b
End Function
編譯這個工程,在Link的時候就會中斷。然後把創建的Class1.obj、Mole1.obj、Project1.obj備份出來。
然後就可以調用Link2.exe連接OBJ到DLL了,我的連接代碼是:
Link2.exe "e:\vbdll\Class1.obj" "e:\vbdll\Mole1.obj" "e:\vbdll\Project1.obj" "E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mathadd /OUT:"e:\vbdll\ProjectOK.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /Dll /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078
注意裡面的/ENTRY和/EXPORT開關,/EXPORT開關聲明了輸出函數mathadd。這樣就大功告成了,可以被其他語言引入,例如在VB中,只需要:
Private Declare Function mathadd Lib "e:\vbdll\ProjectOK.dll" (ByVal a As Long, ByVal b As Long) As Long