找回密碼
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人發表文章前請先閱讀相關版規認識好友、聊天,分享生活趣事
mg七龍珠航海王一拳超人office甲鐵城mega
照片deepnude母女julia香港 女笨小孩bbwbet

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 7455|回復: 23

[問題] 關於templates 的問題(已解決)[複製鏈接]

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-20 11:50 PM|顯示全部樓層
本帖最後由 weirdococo 於 2017-6-4 02:37 PM 編輯

先上
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我嘗試的把那個templates 寫的libary編譯成為Dynamic-link library,
雖然我認為一般templates好像不行做成Dynamic-link library(就我上了一個學期的cpp認知),
...
瀏覽完整內容,請先 註冊登入會員

點評

ren1244 感覺是很厲害的大一,其實我想說沒人回的話可以去「藍色小舖」問看看。  發表於 2017-5-22 06:47 PM
ren1244 可是main.c需要include lib.hpp...。所以lib.hpp還是要寫不是嗎?  發表於 2017-5-22 04:27 PM
ren1244 你給的code沒有lib.cpp,所以不確定你是編譯甚麼東西為動態函式庫。  發表於 2017-5-22 02:42 PM
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-22 04:26 PM|顯示全部樓層
也做是說我想要把
  1. namespace HigherOrderFunctions {

  2.         uint64_t doubleMe ( uint64_t tmp ) {
  3.                 return  tmp * 2;
  4.         }

  5.         //filter
  6.         template < typename Collection, typename filterOperate  >
  7.                 Collection filter( Collection collection, filterOperate operate ) {
  8.                         collection.erase( std::remove_if(collection.begin(), collection.end(),
  9.                         [operate]( typename Collection::value_type i ) { return !operate(i); } ),
  10.                                         collection.end() );
  11.                         return collection;
  12.                 }

  13.         //map
  14.         template < typename Collection, typename mapOperate  >
  15.                 Collection map( Collection collection, mapOperate operate ) {
  16.                         std::transform( collection.begin(), collection.end(), collection.begin(), operate );
  17.                         return collection;
  18.                 }

  19.         //zip
  20.         template < typename Collection, typename biOperate >
  21.                 Collection zip( Collection firstCollection, Collection secoundCollection, biOperate operate ) {
  22.                         std::transform( firstCollection.begin(), firstCollection.end(), secoundCollection.begin(), firstCollection.begin(), operate );
  23.                         return firstCollection;
  24.                 }

  25. }
複製代碼
寫為share libaray,給其他程式(甚至是其他程式語言)用,其實也不是這個,這只是一時想到的範例,最主要是其他程式語言和c++結合的問題!...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-22 05:05 PM|顯示全部樓層
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
本帖最後由 weirdococo 於 2017-5-22 05:19 PM 編輯

還有很詭異的是,我嘗試要去編譯它是可以編譯的(在win10),過程如下:

  1. frank@LAPTOP-8R9HO8BI ~/d/tmp/shareLibTest
  2. $ g++ -v
  3. 使用內建 specs。
  4. COLLECT_GCC=g++
  5. COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/lto-wrapper.exe
  6. 目的:x86_64-pc-cygwin
  7. 配置為:/cygdrive/i/szsz/tmpp/gcc/gcc-5.4.0-1.x86_64/src/gcc-5.4.0/configure --srcdir=/cygdrive/i/szsz/tmpp/gcc/gcc-5.4.0-1.x86_64/src/gcc-5.4.0 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin --without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit --with-dwarf2 --with-tune=generic --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libcilkrts --enable-libgomp --enable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada --enable-libgcj-sublibs --disable-java-awt --disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id --with-default-libstdcxx-abi=gcc4-compatible
  8. 執行緒模型:posix
  9. gcc version 5.4.0 (GCC)

  10. frank@LAPTOP-8R9HO8BI ~/d/tmp/shareLibTest
  11. $ cat lib.cpp
  12. #include <cstdint>
  13. #include <vector>
  14. #include <algorithm>
  15. #include <numeric>

  16. namespace HigherOrderFunctions {

  17.         uint64_t doubleMe ( uint64_t tmp ) {
  18.                 return  tmp * 2;
  19.         }

  20.         //filter
  21.         template < typename Collection, typename filterOperate  >
  22.                 Collection filter( Collection collection, filterOperate operate ) {
  23.                         collection.erase( std::remove_if(collection.begin(), collection.end(), [operate]( typename Collection::value_type i ) { return !operate(i); } ),
  24.                                         collection.end() );
  25.                         return collection;
  26.                 }

  27.         //map
  28.         template < typename Collection, typename mapOperate  >
  29.                 Collection map( Collection collection, mapOperate operate ) {
  30.                         std::transform( collection.begin(), collection.end(), collection.begin(), operate );
  31.                         return collection;
  32.                 }

  33.         //zip
  34.         template < typename Collection, typename biOperate >
  35.                 Collection zip( Collection firstCollection, Collection secoundCollection, biOperate operate ) {
  36.                         std::transform( firstCollection.begin(), firstCollection.end(), secoundCollection.begin(), firstCollection.begin(), operate );
  37.                         return firstCollection;
  38.                 }

  39. }


  40. frank@LAPTOP-8R9HO8BI ~/d/tmp/shareLibTest
  41. $ g++ -fPIC --std=c++11 -c lib.cpp -o lib.so
  42. lib.cpp:1:0: 警告:-fPIC ignored for target (all code is position independent)
  43. #include <cstdint>
複製代碼








補充內容 (2017-5-22 05:11 PM):
正在嘗試如何用Dev C++寫出來,因為命令列工具(像是make git cmake)都是些過時的東西,業界都用些IDE不用這種過氣的工具(老師說的)


補充內容 (2017-5-22 05:12 PM):
雖然IDE比較難學,但還是值得的。

補充內容 (2017-5-22 05:14 PM):
只是好難用,像是Dev C++我還找不到C++11選項。...
瀏覽完整內容,請先 註冊登入會員

點評

cockroachrun 怪怪IDE不是比較簡單用嗎? 還有make git cmake 業界還是有在使用的.  發表於 2017-5-23 09:27 AM
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 2Rank: 2

帖子
571
積分
211 點
潛水值
10871 米
發表於 2017-5-22 06:53 PM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
可以編譯,未必能鏈結。
目前main.cpp能運作的原因是你有include lib.hpp
你可以試試看刪掉so檔,main產生的執行檔應該還是可以執行
因為他根本沒去使用動態鏈結。
只是根據lib.hpp內的樣板內容實例化了
至於給其他程式語言使用我不清楚
那些語言要引用C++寫的函式庫應該會有相關文件
我的猜測需要指定型別而不能用弱型別的方式呼叫C

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-22 07:44 PM|顯示全部樓層
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
ren1244 發表於 2017-5-22 06:53 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

可以編譯,未必能鏈結。
目前main.cpp能運作的原因是你有include lib.hpp
你可以試試看刪掉so檔,main產生 ...

了解,它根本沒有用到我編譯的 lib.so,其實我預設它會編譯錯誤,所以編譯出東西很驚訝。
...
瀏覽完整內容,請先 註冊登入會員





若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7564
積分
4935 點
潛水值
36630 米
發表於 2017-5-22 07:48 PM 來自手機|顯示全部樓層
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
本帖最後由 chevylin0802 於 2017-5-22 08:31 PM 編輯
weirdococo 發表於 2017-5-22 05:05 PM
還有很詭異的是,我嘗試要去編譯它是可以編譯的(在win10),過程如下:




在微軟的windows環境下
.so檔是不能用的
所以沒有任何作用
Windows的動態程式庫是.dll檔
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-22 09:28 PM|顯示全部樓層
chevylin0802 發表於 2017-5-22 07:48 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

在微軟的windows環境下
.so檔是不能用的
所以沒有任何作用

剛剛去stackoverflow問了,
他說你要在CPP大一邊把程式打包,有一些東西可以用
...
瀏覽完整內容,請先 註冊登入會員
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7564
積分
4935 點
潛水值
36630 米
發表於 2017-5-22 10:08 PM 來自手機|顯示全部樓層
本帖最後由 chevylin0802 於 2017-5-22 10:41 PM 編輯
weirdococo 發表於 2017-5-22 09:28 PM
剛剛去stackoverflow問了,
他說你要在CPP大一邊把程式打包,有一些東西可以用
像是SWIG   Boost.Python ...


這不需要擔心
以boost.Python來說
就是你把一套支援的c++11的程式庫再進一步重新以非c++11的cpp文件封裝過都沒差
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-23 07:31 PM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
本帖最後由 weirdococo 於 2017-5-23 07:32 PM 編輯
weirdococo 發表於 2017-5-22 05:05 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

還有很詭異的是,我嘗試要去編譯它是可以編譯的(在win10),過程如下:
...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

Rank: 2Rank: 2

帖子
571
積分
211 點
潛水值
10871 米
發表於 2017-5-23 11:12 PM|顯示全部樓層
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
這就是為什麼有人只用文字編輯器寫程式了
(或是只把IDE當編輯器用)
因為程式如何編譯是自己控制的
比較不會有移植的問題
IDE把要做的事情用他自己的格式紀錄自動化的編譯
雖然方便,但不透明
(去研究project file就失去原本的意義了)

python部分,我也是剛碰不久
但我都是文字編輯器寫好後在cmd下跑,沒開過IDE

考慮到IDE升級或是移植性的問題
...
瀏覽完整內容,請先 註冊登入會員





若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7564
積分
4935 點
潛水值
36630 米
發表於 2017-5-24 08:33 AM|顯示全部樓層
本帖最後由 chevylin0802 於 2017-5-24 08:35 AM 編輯
ren1244 發表於 2017-5-23 11:12 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這就是為什麼有人只用文字編輯器寫程式了
(或是只把IDE當編輯器用)
因為程式如何編譯是自己控制的
...
瀏覽完整內容,請先 註冊登入會員
汪汪大仙云:嘴巴說不要, 身體倒是挺老實的
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7564
積分
4935 點
潛水值
36630 米
發表於 2017-5-24 08:38 AM|顯示全部樓層
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
weirdococo 發表於 2017-5-23 07:31 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

IDE難用,是因為我的記憶比較差,很多細節我都記不住,
像是用python寫一些小東西,遇到速度問題用C寫,
...

...
瀏覽完整內容,請先 註冊登入會員
汪汪大仙云:嘴巴說不要, 身體倒是挺老實的
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

Rank: 2Rank: 2

帖子
274
積分
383 點
潛水值
8840 米
發表於 2017-5-30 03:56 PM|顯示全部樓層
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
weirdococo 發表於 2017-5-22 07:44 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

了解,它根本沒有用到我編譯的 lib.so,其實我預設它會編譯錯誤,所以編譯出東西很驚訝。

會有這樣的問 ...

...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
140
積分
127 點
潛水值
3940 米
發表於 2017-5-31 03:36 PM|顯示全部樓層
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
本帖最後由 weirdococo 於 2017-5-31 03:38 PM 編輯
a333221 發表於 2017-5-30 03:56 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

拿底下的例子去編譯,可以順利編出 .so,不過編出來的 .so 只有 Hello()這函數能用,
不存在 template vo ...
...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 2Rank: 2

帖子
274
積分
383 點
潛水值
8840 米
發表於 2017-5-31 06:17 PM|顯示全部樓層
weirdococo 發表於 2017-5-31 03:36 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

-c 是本來就想這樣下的,我對這個option的理解是不要用linker,看起來好像是不必要的,但想說加上去也沒差 ...

要編譯 .so 不要下 -c,-c 是編 object file 用的
...
瀏覽完整內容,請先 註冊登入會員





若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部