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
-
VB là trình thông dịch không thể tạo ra dll. VC, Delphi,.. và các trình biên dịch # mới có thể tạo ra dll. Bạn lên chú ý điều này, trình thông dịch và trình biên dịch # nhau.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 hWin
WORD,uMsg
WORD,wParam
WORD,lParam
WORD
.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
-
VB là trình thông dịch tức là khi tạo ra file exe bản thân nó ko tự chạy được. Còn C,C++, VC,... là trình biên dịch có thể tạo ra file chạy độc lập không phải thông dịch. Cho nên VB ko thể tạo dll. Xin lưu ý nhé Active Dll không phải là dll. Hai cái # nhau hoàn toàn đấy. VB chỉ có thể sử dụng dll có sẵn chứ ko tạo đc dll.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:
DLL MyLib sẽ export một hàm là fnMyLib, một biến là nMyLib, một class là CMyLib có thể gọi ở các chương trình khác viết bằng VB, Delphi hoặc VC.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
trong MyLib.cpp, vàCode:CMyLib::CMyLib() { return; }
trong MyLib.hCode: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:
Bây giờ ta sẽ tạo một file definition để báo cho trình Linker biết DLL MyLib của chúng ta export những hàm và biến nào.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
Vào menu Build chọn Set Active Configuration, chọn MyLib - Win32 Release, bấm OK để VC sẽ biên dịch MyLib ở Release mode (không có chứa thông tin Debug).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:
Như vậy là DLL của chúng ta đã OK. Bây giờ viết một chương trình bằng VB để test thử.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:
Chú ý thay "C:\current-working\mylib\release\MyLib.dll" bằng đường dẫn đến MyLib.dll trên máy tính của bạn. Lưu project lại, bấm F5 để chạy chương trình. Khi chương trình hiện ra Form1, nhấn vào button ta sẽ nhận được câu thông báo "Function return: 42" là OKCode: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 Nên mua máy phay CNC cũ, máy mới phổ thông hay máy chất lượng cao? Góc nhìn từ bài toán sản xuất thực tếbởi nguyendinhvanNgày trước, khi KT đang tăng trưởng, một cái máy tự động cũ tầm trung, thì khoảng 5 năm là hoàn vốn. Nhưng hiện tại, mọi việc đều chậm trễ, cạnh tranh, nên theo các xếp tính thì phải hơn 10 năm làm việc ngon lành thì mới hoàn vốn....
-
Channel: Máy công cụ
Hôm qua, 20:23 -
-
Trả lời cho cách làm led Hao Quang.có pro nào biết k nhỉ ???bởi StatusHello! I'm from Kazakhstan. Can anyone share the HEX file with me? The download link in post 50 doesn't work.
-
Channel: Vi điều khiển họ 8051
18-12-2025, 00:05 -
-
bởi mylinhattChào anh em cơ khí,
Trong quá trình tư vấn đầu tư thiết bị cho xưởng, mình gặp rất nhiều câu hỏi kiểu: “Nên mua máy phay CNC cũ để tiết kiệm, chọn máy mới phổ thông cho yên tâm, hay cố gắng lên máy chất lượng cao để làm hàng khó?”. Thực tế, đây không phải câu hỏi chỉ về...-
Channel: Máy công cụ
17-12-2025, 13:38 -
-
Trả lời cho Vấn đề về tốc độ quaybởi nguyendinhvanSử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
-
Channel: Điện tử truyền hình
14-12-2025, 19:50 -
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -

Comment