Muốn tạo một dll (vc hoặc vb) mới thì phải làm thế nào hả các bạn. Nếu có thể thì mong các bạn giúp với - một ví dụ mini thôi, đang bí đây.
Thông báo
Collapse
No announcement yet.
Tạo dll ?
Collapse
X
-
Tạo 1 DLL File riêng!
Chủ đề có vẻ anh em ít quan tâm nhỉ???
Không biết bạn đã làm được điều bạn muốn chưa vậy?
Để tạo 1 File DLL dùng riêng cho Project của bạn, bạn có thể viết code cho dll file bằng nhiều ngôn ngữ: Assembly, Basic, Delphi, Pascal, C, C++... rồi biên dịch ra file ngồn thành dll file với bộ thông dịch tương ứng
Hiện nay trình thông dịnh rất thông dụng và thường có sẵn trong Tool của ngôn ngữ cấp cao: VB, VC++,C, MASM32( Với OS 32 bit).
Khi có File Dll, bạn có thể sử dụng nó như các hàm API khác!
Để mình tìm lại xem có cái Project nào trong máy không, mình sẽ Post lên tri tiết sau!
-
ban hay tim doc cuon: do luong va dieu khien bang may tinh cua tac gia. NGUYEN DUC THANH NXB DAI HOC QUOC GIA TPHCMCty Cơ Điện Tử Hiệp Phát. www.hiepphatcnc.com. Chuyên sản xuất máy CNC mới, Bán, Sửa Chữa, Cung cấp bộ truyền DNC không cần máy tính cho các hệ Fanuc, Mitsubishi, Yasnac, Okuma, Seicos. ĐT: 0918374006, buithanhluan@gmail.com
Comment
-
Nếu bạn dùng VS Studio .Net. Một dll được coi như một Project, bạn có thể sử dụng nó như một component trong thư viện của bạn bằng cách khi bạn tạo mới một project, bạn tạo một Class project. Khi dich chương trình thì toàn bộ Class - Method - Variable trong Project của bạn được gói gọn vào trong file dll. C++ hay VB đều vậy.
Còn bạn dùng vb6 thì nó giới thiệu ngay tại những chương đầu, vc cũng vậy, tham khảo kỹ trước khi tiến hành project!
Chúc bạn thành công!
Comment
-
Nguyên văn bởi Duy_pro Xem bài viếtChủ đề có vẻ anh em ít quan tâm nhỉ???
Không biết bạn đã làm được điều bạn muốn chưa vậy?
Để tạo 1 File DLL dùng riêng cho Project của bạn, bạn có thể viết code cho dll file bằng nhiều ngôn ngữ: Assembly, Basic, Delphi, Pascal, C, C++... rồi biên dịch ra file ngồn thành dll file với bộ thông dịch tương ứng
Hiện nay trình thông dịnh rất thông dụng và thường có sẵn trong Tool của ngôn ngữ cấp cao: VB, VC++,C, MASM32( Với OS 32 bit).
Khi có File Dll, bạn có thể sử dụng nó như các hàm API khác!
Để mình tìm lại xem có cái Project nào trong máy không, mình sẽ Post lên tri tiết sau!
Comment
-
Với VB bạn hoàn tạo đc ActiveX Dll -> dll file . Để tạo dll file hay .com hoặc .exe,... thì việc đầu tiên là phải tạo ra file đối tượng (.obj) hay tượng ưng sau đó gọi Link với các tuỳ trọn ( /dll ) để tạo ra file đích( dll file). MÌnh không đc đào tạo chính quy về tin học nên thuật ngữ dùng cũng thiếu chính xác. Mong mọi người góp ý
Comment
-
Vi dụ về tạo Dll file
Mình xin đưa ra một ví dụ:Tạo testdll.dll cho phép hiển thị 1 hộp thoại gồm 3 nút lệnh: Dong y, Thoat và Tro giup
testdll.dll được dịch từ testdll.asm
Đây là nội dung của testdll.asm:
; «««««««««««««««««««««««««««««««««««««««««««««««««« «««««««««««««««««««
.486 ; viet cho chip 80486
.model flat, stdcall ;
option casemap :none ;
; Chuong trinh duoc viet bang MASM32
; include files
; ~~~~~~~~~~~~~
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\Comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\oleaut32.inc
include \masm32\macros\macros.asm ; macro file
; libraries
; ~~~~~~~~~
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\Comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\oleaut32.lib
include \masm32\include\dialogs.inc
DlgProc1 PROTO WORD,WORD,WORD,WORD
.data?
hInstance dd ?
.code
; «««««««««««««««««««««««««««««««««««««««««««««««««« «««««««««««««««««««
start :
call main
; «««««««««««««««««««««««««««««««««««««««««««««««««« «««««««««««««««««««
main proc
wWid equ 220 ; Chieu rong hop thoai
wHgt equ 120 ; chieu cao hop thoai
bWid equ 40 ; chieu rong nut lenh
bHgt equ 12 ; chieu cao nut lenh
wStp equ bHgt + 2 ; khoang cach 2 nut
wStt equ 5 ; tao do nut lenh
Dialog "MASM32 Dialog", \ ; Tieu de hop thoai
"MS Sans Serif",8, \ ; font va co chu
WS_OVERLAPPED or \ ; canh toa do hien thi
WS_SYSMENU or DS_CENTER, \ ; cho hop thoai
3, \ ; su dung 3 nut lenh
50,50,wWid,wHgt, \ ; Dat phan giai
1024 ;
; Nut Dong y
DlgButton "Dong y",WS_TABSTOP, wWid - (bWid + 10),wStt, bWid,bHgt,IDOK
; Nut Thoat
DlgButton "Thoat",WS_TABSTOP, wWid - (bWid + 10),wStt+wStp, bWid,bHgt,IDCANCEL
; Nut Tro giup
DlgButton "Tro giup",WS_TABSTOP, wWid - (bWid + 10),wStt+wStp*2,bWid,bHgt,IDHELP
; Goi thu tuc xu ly su kien cho hop thoai
CallModalDialog hInstance,0,DlgProc1,NULL
ret
main endp
; «««««««««««««««««««««««««««««««««««««««««««««««««« «««««««««««««««««««
; Thu tuc xu ly su kien cho hop thoai
DlgProc1 proc hWinWORD,uMsgWORD,wParamWORD,lParamWORD
.if uMsg == WM_CLOSE
invoke MessageBox,hWin,SADD("Thoat??"),SADD("Help"),MB_OK
invoke EndDialog,hWin,0
.elseif uMsg == WM_COMMAND
.if wParam == IDOK
invoke MessageBox,hWin,SADD("Ban vua bam nut Dong y"),SADD("OK"),MB_OK
.elseif wParam == IDHELP
invoke MessageBox,hWin,SADD("Ban vua bam nut Tro giup"),SADD("Help"),MB_OK
.elseif wParam == IDCANCEL
invoke MessageBox,hWin,SADD("Ban vua bam nut Thoat"),SADD("Help"),MB_OK
.endif
.endif
xor eax, eax
ret
DlgProc1 endp
; «««««««««««««««««««««««««««««««««««««««««««««««««« «««««««««««««««««««
end startLast edited by Duy_pro; 30-11-2006, 14:59.
Comment
-
để dịch testdll.asm ->dll file, bạn tạo thêm 2 file sau: testdll.DEF và makeit.bat.
nội dung của file makeit.bat:
@echo off
if exist testdll.obj del testdll.obj
if exist testdll.dll del testdll.dll
\masm32\bin\ml /c /coff testdll.asm
\masm32\bin\Link /SUBSYSTEM:WINDOWS /DLL /DEF:testdll.def testdll.obj
del testdll.obj
del testdll.exp
dir testdll.*
pause
nội dung của testdll.DEF:
LIBRARY testdll
EXPORTS main
Các file này đều có thể được tự động tạo bởi MASM32
Comment
-
Khai báo trong VB( đặt ở modul):
Public Declare Sub main Lib "testdll.dll" ()
Các gọi:
Call main
Đây là File testdll.dllAttached Files
Comment
-
Nguyên văn bởi Duy_pro Xem bài viếtVới VB bạn hoàn tạo đc ActiveX Dll -> dll file . Để tạo dll file hay .com hoặc .exe,... thì việc đầu tiên là phải tạo ra file đối tượng (.obj) hay tượng ưng sau đó gọi Link với các tuỳ trọn ( /dll ) để tạo ra file đích( dll file). MÌnh không đc đào tạo chính quy về tin học nên thuật ngữ dùng cũng thiếu chính xác. Mong mọi người góp ý
Comment
-
Mình xin đưa ra một ví dụ tạo DLL bằng VC 6 đơn giản như sau
- Trong VC vào menu File chọn New/Project
- Chọn kiểu project là Win32 Dynamic-Link library, gõ tên Project name ví dụ là MyLib và chọn đường dẫn lưu project (Location).
- Bấm OK để chuyển qua hộp thoại Win32 Dynamic-Link library - Step 1 of 1
- Chọn option là A DLL that exports some symbols.
- Bấm OK 2 nhát và VC generate ra các file cần thiết.
- Mở file MyLib.cpp ta sẽ thấy nội dung như sau:
Code:// MyLib.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "MyLib.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } // This is an example of an exported variable MYLIB_API int nMyLib=0; // This is an example of an exported function. MYLIB_API int fnMyLib(void) { return 42; } // This is the constructor of a class that has been exported. // see MyLib.h for the class definition CMyLib::CMyLib() { return; }
Ta có thể xóa định nghĩ class CMyLib đi vì không cần thiết. Xóa
Code:CMyLib::CMyLib() { return; }
Code:class MyLib_API CMyLib { public: CMyLib(void); // TODO: add your methods here. };
Bây giờ bạn có thể thêm hàm và biến cần dùng trong DLL bằng cách khai báo giống khai báo của hàm MYLIB_API int fnMyLib(void). Nhớ thêm khóa MyLib_API trước tên hàm hoặc biến. Ví dụ cần thêm một hàm Add trả về tổng 2 tham số ta viết như sau:
Code:MYLIB_API int Add(int x, int y) { return (x+y); }
Bấm New trong menu File, chọn Text File, gõ File name là MyLib.def. Nhớ check Add to project. Bâm OK
Gõ nội dung sau vào file MyLib.def
Code:LIBRARY MyLib EXPORTS nMyLib fnMyLib
Bâm F7 để biên dịch chương trình. Thư viện MyLib.dll đầu tay của chúng ta sẽ nằm trong thư mục con Release của thư mục chứa project.
Bây giờ chúng ta cần kiểm tra xem thư viện MyLib.dll có chứa đủ các biến và hàm mà ta muốn export không bằng công cụ gọi là DUMPBIN của bộ Visual Studio. Mở Command Line lên và chuyển vào thư mục chứa MyLib.dll gõ dumpbin /EXPORTS mylib.dll <Enter>
Ta sẽ thấy các dòng sau:
Code:ordinal hint RVA name 1 0 00001010 fnMyLib 2 1 00008A38 nMyLib
Mở VB lên tạo một project mới trong Form1 thêm một button là Command1, nhấn kép mouse vào button để mở cửa sổ code lên và gõ vào nội dung sau:
Code:Private Declare Function fnMyLib Lib "C:\current-working\mylib\release\MyLib.dll" () As Integer Private Sub Command1_Click() Dim x As Integer x = fnMyLib MsgBox "Function return: " & x End Sub
Chúc mừng, bạn đã là chuyên gia viết DLL xuất khẩu cho các công ty phần mềm Mỹ và châu Âu.Last edited by bxngoc; 30-11-2006, 16:32.“If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds
Comment
-
Thấy các bác discuss sôi nổi về dùng VB6 tạo DLL em cũng xin giơ tay phát biểu. Thực ra VB chì tạo được ActiveX DLL hoặc ActiveX Document DLL. Cả hai đều có thể sử dụng được ở chương trình viết bằng ngôn ngữ khác bằng theo quy ước sử dụng các COM hoặc tạo hay nhúng ActiveX control. Khác với cách gọi hàm trong DLL truyền thống. Dù các nào thì ta cũng reuse (tái sử dụng) được thư viện ta viết (với mục đích dùng chung cho các ứng dụng hoặc chia sẻ cho người khác). Vì thế chẳng nên mất thời gian để tranh luận về việc VB6 có tạo được DLL hay không;
Tuy nhiên để "biến cái không thể thành cái có thể" em Google một phát và tìm ra được một cách workaround để cho những fan hâm mộ VB6 có thể tạo được DLL như những ngôn ngữ khác như C xiếc, ASM hay .NET gì. Mời các bác thưởng lãm.
VB Helper: HowTo: Make a standard DLL
Creating a Windows DLL with Visual Basic“If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi minh_tri_bk
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 09:30 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHỏi chỗ anh này là biết cách xử lý ngay thôi. https://www.google.com/search?sca_es...SBJ6H9fqicsb5s...
-
Channel: Điện tử công suất
hôm nay, 01:07 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanBác tìm coi mấy cái clip về tai nạn hàng không sẻ sáng tỏ nhiều điều ......
-
Channel: Điện tử công suất
Hôm qua, 11:02 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanChính xác mua tại hãng và mua qua đại lý khác nhau rất nhiều về giá và chất lượng ....
-
Channel: Điện tử công suất
Hôm qua, 10:51 -
-
Trả lời cho Xin giúp đỡ mạch chuông trò chơi ạ !!bởi DessrtTôi đồng ý, điều này thực sự thú vị....
-
Channel: Hỗ trợ học tập
31-01-2025, 22:08 -
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
30-01-2025, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
30-01-2025, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
Comment