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 Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi nguyendinhvanTheo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
Cách đơn giản...-
Channel: Điện thanh
hôm nay, 00:04 -
-
bởi Ng.Phuong.5Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
Mấy con...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 22:44 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
-
Channel: Điện tử công suất
Hôm qua, 19:02 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanChủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
-
Channel: Điện tử công suất
Hôm qua, 15:43 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanLoa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
-
Channel: Điện thanh
Hôm qua, 15:28 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
-
Channel: Điện thanh
Hôm qua, 11:44 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi viettinhNó không phải cái loa rời. Chả nhẽ đèo thêm 2 con loa tép ngoài thì kỳ lắm....
-
Channel: Điện thanh
Hôm qua, 09:45 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ chú mua thêm loa tép nối tiếp qua con tụ rồi mắc vào cùng loa trung là được ạ...
-
Channel: Điện thanh
07-01-2025, 19:53 -
-
Trả lời cho Tìm datasheet linh kiện điện tử.bởi mèomướpDạ cháu hỏi bạn cháu thì bạn ấy trả lời như thế này ạ. Cháu cũng hông bít có đúng hông nữa ạ
Linh kiện điện tử với mã "943BA" và "W58BAL" là một loại cầu chì tự động (circuit breaker) do TE Connectivity sản...-
Channel: Điện tử dành cho người mới bắt đầu
07-01-2025, 19:50 -
-
bởi viettinhChuyện là mình mới đập hộp con loa kéo Sony SRS-XV900. Do khu vực mình k có sẵn hàng để trải nghiệm thực tế nên chỉ tham khảo các kênh revew online.
Mua về sử dụng thì thấy hơi buồn về chất âm, Mở max k to bằng cái loa kéo china, bass...-
Channel: Điện thanh
07-01-2025, 17:18 -
Comment