Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: export/import hàm public từ 1 dll.

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    93

    Mặc định export/import hàm public từ 1 dll.

    em viết trong data.dll export 1 hàm như sau :

    __declspec(dllexport) void __cdecl PatchDataMemMess(char* TextM, char* TextC)
    {
    MessageBox(NULL,TextM,TextC,NULL);
    }


    Sau đó cho 1 exe call dll này sử dụng như 1 hàm bình thường.

    giờ em muốn viết tiếp 1 dll khác dùng để import cái hàm PatchDataMemMess để sử dụng thì phải code như nào ạ ?

    em viết thế này đã đúng chưa ạ ?

    typedef void (*Mess)(char* a, char* b);
    static Mess link;
    void Im()
    {
    link = (Mess) GetProcAddress(GetModuleHandle("data.dll"),"DataPa tchMemMess");
    char a[] = "start 1";
    char b[] = "start 2";
    link(a,b);
    }


    build xong inject vào cái exe đấy thì hỏng. các anh giúp dùm em import như này đã đúng chưa, sửa lại dùm em ạ.

  2. #2
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    bạn đặt trace point ở dòng
    link = (Mess) GetProcAddress(GetModuleHandle("data.dll"),"DataPa tchMemMess");
    xem kết quả nó ra bao nhiêu.

    Khi bạn inject vào project mà hỏng thì bao giờ nó cũng trả lại mã lỗi, bạn dùng hàm gọi hàm GetLastError để xem chi tiết lỗi là gì.

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    93

    giá trị của link là 0

    còn lỗi thì k lấy dc vì....inject xong exe kia bị lỗi debug ngay :|

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    GetModuleHandle("data.dll") trả về NULL ah? Có biết GetModuleHandle có tác dụng như thế nào không?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    93

    @anh kevin : GetModuleHandle dùng để lấy handle của 1 dll hoặc 1 exe, nếu NULL thì lấy handle tại chương trình hiện tại.
    Code:
            typedef void (*Mess)(char* a, char* b);
    	Mess link;
    	HMODULE Ex;
    	LPCTSTR FileMod = "C:\\export.dll";
    	if ((Ex = GetModuleHandle(FileMod)) == NULL)
    	{
    		char a[50];
    		sprintf(a,"%d",GetLastError());
    		MessageBox(NULL,a,NULL,NULL);
    	}
    	else
    	{
    	link = (Mess) GetProcAddress(GetModuleHandle(FileMod),"DataPatchMemMess");
    	char a[] = "123";
    	char b[] = "456";
    	link(a,b);
    	}
    lần này khi em dùng GetLastError thì nó báo 126. ( dù đã có file export.dll nằm tại C )
    Sai chỗ nào vậy anh kevin.
    Đã được chỉnh sửa lần cuối bởi hsagduag : 26-04-2012 lúc 09:11 PM.

  6. #6
    Ngày gia nhập
    07 2011
    Nơi ở
    Moscow-Russia
    Bài viết
    148

    Mặc định export/import hàm public từ 1 dll.

    Làm vậy e không ổn đâu bạn, hãy dùng LoadLibrary().
    A good beginning and a good ending !

Các đề tài tương tự

  1. Export và import Excel trong C#
    Gửi bởi chienthuc trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 22-03-2011, 11:11 PM
  2. Database import / export giữa các hệ quản trị ?
    Gửi bởi dvminhpro45 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 3
    Bài viết cuối: 19-03-2011, 03:56 PM
  3. Import - Export ra file XLS từ SQL
    Gửi bởi nguyetthu trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 09:55 AM
  4. Hướng dẫn import Export trong MySQL
    Gửi bởi C&C++ trong diễn đàn Thủ thuật, Tutorials Database
    Trả lời: 0
    Bài viết cuối: 18-07-2010, 08:41 AM
  5. import,export giữa XML và SQL Sever 2005
    Gửi bởi hoaiTN trong diễn đàn Thủ thuật, Tutorials Database
    Trả lời: 1
    Bài viết cuối: 19-03-2009, 10:34 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn