2011年6月16日 星期四

dll檔的建立與使用

環境: vs 2010 with C++

【建立dll檔】


  1. 將想要製作成dll檔的function整理好(ex: Function_A.cFunction_A.h)

  2. (vs 2010)新增專案→Win32專案,輸入專案名稱(ex:FuncDll)→[確定]

  3. 點選[下一步]→應用程式類型:DLL→[完成]

  4. 將相關檔案匯入(Function_A.c Function_A.h)
    此時專案內共有檔案如下:
    原始程式檔: Function_A.c、dllmain.cpp、stdafx.cpp、Funcdll.cpp
    標頭檔: Function_A.h、stdafx.h、targetver.h

  5. Function_A.h內,要輸出的function最前頭加上"__declspec (dllexport)"
    (ex: void funcA_export1(int abc)__declspec (dllexport) void funcA_export1(int abc))

  6. Function_A.c 要改成 Function_A.cpp

  7. Function_A.cpp中,若無"stdafx.h",請include進去

  8. 在dllmain.cpp內,加入" #include "Function_A.h" "

  9. 建置→重建方案→成功 (此時在專案資料夾內應該會出現FuncDll.dllFuncDll.lib)
【使用dll檔】


  1. 開啟應用專案,準備使用剛剛建好的dll檔

  2. FuncDll.dllFuncDll.libFunction_A.h (個人將.h的檔名也手動改成FuncDll比較好認)三個檔案放入應用專案的資料夾內。

  3. 匯入FuncDll.h至專案,並將內文的__declspec (dllexport)改成__declspec (dllimport),且於專案適當處加上"#include "FuncDll.h" "。

  4. 專案屬性→連結器→輸入→其他相依性→[編輯]
    填入 FuncDll.lib

  5. 執行→成功


※ 以上為個人使用成功的範例


2009年5月26日 星期二

Weka練習

開始用Weka沒多久,就碰上了一個問題─「資料量太大」
所以無法直接從Explorer操作介面直接open file。















不過同時他也提供了資訊:
if we want to use 128MB as heap size, the command line looks like......
java -Xmx128m -classpath ...
這個資訊很有幫助,只是...為什麼在重要時刻要點點點呢? (因為我不知道點點點要放什麼呀!!)

classpath究竟是要設定什麼呢?而設定此一變數又是為了什麼呢?


好吧,繼續往下找答案。

2009年1月3日 星期六

Python 新手實做

進入到python的互動式命令列環境後,就可以開始我們的新手實做了! ^_^

  • 閱讀說明:紅色字體 使用者輸入的指令
         黑色字體 系統自動產生
         藍色字體 其它說明文字

===== 字串 =====
>>> print('Hello world!')
Hello world!

(※更多print提示,可以下列指令查詢)
>>> help(print)

===== C語言 =====
#include
...
Py_Initialize();
PyRun_SimpleString("x = brave + sir + robin");

2009年1月2日 星期五

[筆記]命令提示字元

開啟命令提示字元後,可直接鍵入下述指令(紅色字體)。

指令/說明
=====================================
help/可查詢相關指令
dir /查看目前所在資料夾的檔案明細
cd.. /退回上一層資料夾
cd 資料夾名稱 /進入"資料夾名稱"資料夾
(ex: "cd MyDocument" 進入MyDocument資料夾)
=====================================

其他用法,可於網路上以關鍵字"命令提示字元 指令"搜尋

Python

===== 寫在前面 =====
這篇分享並無法保證所有的內容都是正確無誤的,是有鑑於自己在使用他人的工具時,一直無法順利執行,因此將解決問題的過程都放上來,希望能夠藉由分享來幫助其他人能夠enjoy在programming的世界!

===== 如為新手,請參閱Python Tutorial =====
  • Python的網頁上,有最新版本的Python Tutorial。
  • 另有中文版的Python Tutorial(教學文件),但版本為2.0 (2000/10/16修定)
  • 如須下載Python,請至Python的網頁上免費下載
    python-3.0→使用libsvm時,少了一個Queue的modul。
    python-2.6.1→可正常使用libsvm。

===== 使用狀況與心得(OS: windows) =====
  • 正常使用方式 (不過不曉得為什麼,無法使用libsvm內的.py檔)
  1. 開啟命令提示字元。
  2. 利用cd與cd..到安裝python的資料夾。(如何使用命令提示字元,請參閱連結)
  3. dir查看,應該會有python.exe的檔案。
  4. 直接鍵入python,就可啟動python直譯器。
  5. 或者以滑鼠直接點擊python.exe,取代1~4的步驟。
  6. 如果要離開,同時按住controlz(只適用於windows),則螢幕上會出現^Z的字樣,再按enter即可跳離python直譯器。
  7. 更多新手實做(OS:windows)
  • libsvm內.py檔的使用方式(OS:windows)
  1. 我們先以checkdata.py檔案來測試,是否可順利使用。
  2. 上述步驟做到2,並且將要用到的所有檔案放入同一個資料夾。
  3. 不用進入python直譯器,以下兩種輸入方式,我都可以正常執行。
    (使用者輸入) checkdata.py data.scale
    (電腦輸出) No error.
    (使用者輸入) python checkdata.py data.scale
    (電腦輸出) No error.
  4. 如果作業系統為windows的使用者,在有print的程式碼上有出現錯誤的話,請加上()
    • 原程式:print usage
    • 更改為: print(usage)
      總之將所有想要print的東西全部括號起來就是了
  5. 另外我自己有發生的一個錯誤為grid.py檔的
    begin_level = round(max(map(lambda (x):x[2],db))) - 3
    不確定一下改法是否正確,但編譯至少合法了。
    • 原程式:begin_level = round(max(map(lambda (x):x[2],db))) - 3
    • 更改為:begin_level = round(max(map(lambda x :x[2],db))) - 3

===== Python資訊分享 =====

[Python程式整合方面]
Python為百分百的物件導向程式語言,可以搭配其他物件導向的系統程式語言一起使用(ex: C++ and Java),亦可以將C++和Java所編寫出的類別當作子類別來使用。藉由採用Python與C語言整合用的API,Python程式可以外加C/C++語言編寫的元件來擴充功能;另一方面,Python程式也可以內嵌到C/C++的程式裡。
Ref:《Python 入門》author: Mark lutz

[Python開發標準]
Python以ANSI C的標準研發而成,具有可移植性(portable)。Python編寫的程式碼都可以自動編譯成具移植能力的位元碼(bytecode),可執行於不同作業平台(ex: Unix, Linux, MS-DOS, MS-windows 95/98/NT, Maccintosh, Amiga, Be-OS, OS/2, VMS and QNX )。Python符合POSIX的標準,支援一般作業系統所擁有的工具項目,如環境變數(environment variable)、檔案、socket、管道(pipe)、執行緒(thread)和正規運算式(regular expression)等等。
Ref:《Python 入門》author: Mark lutz

SVM (software)

SVM的開發工具
進階功能(調整最佳化參數)須使用到Pythongnuplot,因此在使用前必須將此兩者安裝完畢。

※more softwares of SVM (Ref: Support Vector Machine from Wiki)

===== SVM by polynomial =====