DLL與傳遞/回傳物件問題? |
尚未結案
|
nlj859
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
我在DLL裡提供了一個function,負責接收物件和處裡物件,之後再把它傳遞出去.
其code如下:
#pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } class testO { public: int a; double b; }; void __declspec(dllexport) __stdcall test(testO *a1) { int aa; double bb; aa=a1->a*10; bb=a1->b 10; return (a1); }主程式部份如下: UserDefin.h void __declspec(dllexport) __stdcall test(testO *a1);Unit1.cpp #include "UserDefine.h" class Ca { public: int a; double b; }; void __fastcall TForm1::Button1Click(TObject *Sender) { Ca *ca=new Ca; ca->a=5; ca->b=10; test(ca); //...如何確認回傳它有改變數值?如何接收物件? }目前我不知道該如何傳遞物件及回傳物件,不曉得能不能指導一下此程式該如何改?感激不盡. |
nlj859
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
我在DLL的部份改成如下:
Unit1.cpp:
#include "File1.h" void __declspec(dllexport) __stdcall test(testO *a1) { a1->a *= 10; a1->b = 10; }File1.h: class __declspec(dllexport) testO { public: int a; double b; };Build之後,我把.lib和.dll和File1.h複製到我client的project裡面 ==================================================================== Client端部份改成如下: Unit1.cpp #include "UserDefine.h" #include "File1.h" void __fastcall TForm1::Button1Click(TObject *Sender) { testO *ca; ca->a=5; ca->b=10; test(ca); ShowMessage(ca->a); //秀出運算後的新值 ShowMessage(ca->b); //秀出運算後的新值 }UserDefine.h void __declspec(dllexport) __stdcall test(testO *a1);===================================================================== 但Compile出現: [C Error] UserDefine.h(1): E2147 'testO' cannot start a parameter declaration [C Error] Unit1.cpp(28): E2034 Cannot convert 'testO *' to 'int *' [C Error] Unit1.cpp(28): E2342 Type mismatch in parameter 'a1' (wanted 'int *', got 'testO *') 請問這些錯誤該怎麼更正? 謝謝. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |