Re: [問題] 想問有關wxWidgets的問題...

看板C_and_CPP (C/C++)作者 (克樓瑟)時間2月前 (2024/08/28 17:40), 2月前編輯推噓2(205)
留言7則, 4人參與, 2月前最新討論串4/4 (看更多)
※ 引述《easterday (....)》之銘言: : 自問自答: : 現在我的進度到這裡:https://tinyurl.com/2atpsmkh : 編起來就是有錯誤訊息 : C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: : textbox.o:textbox.cpp:(.rdata$.refptr._ZTV10MyTextCtrl[.refptr._ZTV10MyTextCtrl]+0x0): : undefined reference to `vtable for MyTextCtrl' : C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: : C:/msys64/mingw64/lib/libmingw32.a(lib64_libmingw32_a-crtexewin.o): in : function `main': : C:/M/B/src/mingw-w64/mingw-w64-crt/crt/crtexewin.c:67:(.text.startup+0xbd): : undefined reference to `WinMain' : collect2.exe: error: ld returned 1 exit status : make: *** [Makefile:11: CH3.exe] Error 1 : 有人肯幫忙看看嗎? 首先我想問的是:既然你是在 Windows 上編譯,有一定要用 MinGW 嗎? 以 wxWidgets 來說,我覺得用 Visual Studio 問題會比較少。 至少你遇到的那兩個問題,我覺得都跟 linker or 函式庫有關。 如果你想用 Visual Studio setup 開發環境的話,我之前有寫過一份簡單的文件, 可以參考一下:https://hackmd.io/@closer/BJrq8PcNP 回到你的程式碼。 我在 Visual Studio 的環境中編譯你的 .cpp,其實只有一個問題。 就是你在 class MyTextCtrl 的宣告中,加入了 DECLARE_DYNAMIC_CLASS 這個巨集。 你只要拿掉那一行,就能編譯了。 此時我要再問一個問題:你知道這個 dynamic class 是做什麼用的嗎? 你有需要用嗎? 依據這篇文章:https://docs.wxwidgets.org/trunk/overview_rtti.html DECLARE/IMPLEMENT_DYNAMIC_CLASS 是用來產生 wxWidgets 自己實作的 RTTI 用的。 我個人(至少在使用 wxWidgets 時)從來沒使用過 wxWidgets 自己的 RTTI。 所以如果你沒有特別需求,DECLARE_DYNAMIC_CLASS 那一行是不需要的。 若是你真的需要 wxWidgets 的 RTTI,那麼,依照上面那篇文章,你需要: 1. 在 class 宣告中加入 DECLARE_DYNAMIC_CLASS(也就是你的 Line 8) 2. 在 class 的定義中(Line 64 前後吧)加入 IMPLEMENT_DYNAMIC_CLASS 巨集 3. 為 MyTextCtrl 宣告並實作 default constructor(也就是不帶參數的 ctor) 你只做了 1,少了 2 & 3。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.199.28 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1724838054.A.BD2.html ※ 編輯: closer76 (223.140.199.28 臺灣), 08/28/2024 17:55:37

08/31 23:30, 2月前 , 1F
自問自答:如果還是編不過,
08/31 23:30, 1F

08/31 23:31, 2月前 , 2F
要把textbox.cpp的第一行拿掉
08/31 23:31, 2F

08/31 23:31, 2月前 , 3F
//#pragma interface "textbox.cpp" 要拿掉
08/31 23:31, 3F

08/31 23:32, 2月前 , 4F
感謝幫忙!
08/31 23:32, 4F

09/01 14:07, 2月前 , 5F
#pragma interface不是寫在header?
09/01 14:07, 5F

09/01 16:32, 2月前 , 6F
正常是寫在header啦w
09/01 16:32, 6F

09/02 16:49, 2月前 , 7F
喔,那行 VC++ 自動忽略....只有一個 warning... XD
09/02 16:49, 7F
文章代碼(AID): #1cpl2clI (C_and_CPP)
文章代碼(AID): #1cpl2clI (C_and_CPP)