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
-
bởi nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment