發表文章

eclipse c++ 編譯環境注意事項

一般在按下執行後eclipse會先編譯完C++ code後在Console視窗中顯示執行結果,但如果視窗中空空如也且直接執行編譯好的程式時會出現 找不到 libgcc_s_dw2-1.dll 則請在 Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> MinGW C++ Linker -> Miscellaneous -> Linker flags 欄位中加上 -static-libgcc -static-libstdc++ 即可。 如果還是有狀況則到 MinGW/bin 目錄中將 mingw32-make.exe 改名成 make.exe 即可

Virtual Box使用分享資料夾

圖片
1.  請先 安裝Guest Additons 2.  請將虛擬機器Ubuntu關機 3.  在VirtualBox的主畫面,選擇你的Ubuntu虛擬機器點選 設 定值->分享資料夾 ,       按旁邊的 + 號新增一個分享資料夾,就像這樣:資料夾名稱在這裡是 web-pic ,             如果你的 分享資料夾只想唯讀的話請將Read-only 打勾 4.  啟動虛擬機器Ubuntu 從應用程式->附屬應用程式->終端機 ,開啟一個終端機視窗 5.  輸入下列指令檢查客端額外功能是       否已正確安裝:         lsmod | grep vb       如果已安裝正確應該顯示像        vboxvfs 42048 0       vboxadd 25128 11 vboxvfs       注意第二組的數字並不會和這裡的一樣,但只要有出現這樣的訊息就表示沒問題了 6.  在終端機視窗新增一個你要放分享資料的資料夾,例如:        mkdir /home/使用者名稱/share (其中的使 用者名稱就是你登入Ubuntu的名稱),有一點要注意的是       這個資料夾的名稱不能和上面所設的共享資料夾名稱一樣,否則會連不上 7.  在終端機視窗鍵入 cd /etc  進入/etc目錄 8.  在終端機視窗鍵入 sudo gedit modules 來 編輯modules這個檔案 9.  在這個檔案的最後面加上 vboxvsf 和 vboxad...

C++函式指標的運用及使用JAVA的替代方法

最近同事幫新進同事講解函式指標的妙用,在這裡做一下心得及替代方法比較 C & C++ 函式指標 語法:     type (*functionname)([type],..)    ->  回傳型態 (*函式名稱)(參數,..) 例: #include "stdafx.h" #include using namespace std; void printA(){      cout << "printA" << endl; } void printB(){      cout << "printB" << endl; }         void printC(){      cout << "printB" << endl; } int _tmain(int argc, _TCHAR* argv[]) {         void (*printValue[3])();                  printValue[0] = printA;          printValue[1] = printB;          printValue[2] = printC;         for( int i=0 ; i   printValue[i]();  ...

使用NativeJ包裝java jar

java程式寫作完成後,往往會將其編製成jar檔以方便程式執行,目前windows系統已經可以點兩下滑鼠左鍵即可執行jar檔,但在較舊的windows系統往往必須自己寫bat檔,如此並不是很方便,而且jar檔也容易被解壓縮後實行反組譯,所以我們會希望jar檔包裝成.exe檔,底下介紹NativeJ使用方式,運用此程式包裝後的jar檔將不可回復成jar檔。 1.開啟NativeJ後會自動執行Project Wizard ,一開始就要你去指定NativeJ的專案檔,不能輸     入只能Browse,一開始就悶了,如何下手阿~~按下cancel囉。 2.由於我們還是希望使用Project Wizard,所以先儲存一個空專案(按下Save Project),然後再按     下New Project Wizard這樣就可以按Browse找到我們剛剛儲存的專案檔,next。 3.Executable name ->輸入你想要製作的exe檔名稱,next。 4.Icon file->輸入你想要exe檔的icon檔,可以跳過,next。 5.Application main class->輸入你的程式main class這不用說明吧,next。 6.Application type 這裡兩個選項 console application  graphical application 就看你的程式是     console  mode 或 graphical mode囉,next。 7.重點來拉,Application JAR file,將你的主要jar檔add進來,並將你會用到的其他jar檔一併     add進來。     請注意,這裡的所有jar檔你可以從不同地方的資料夾指定進來,程式在專案設定完成後     會將這些jar檔copy一份到此專案目錄,next。 8.Finish,到此我們完成了大部分設定了,接下來開始各項細部設定。 9.首先看到左邊的Project->Java Runtime,將Baseline version選擇成你的java版本。 10...

C++Builder 2007 Release程式時要包含builder元件的設定方式

由於C++Builder非微軟所開發的視窗開發工具,所以如果以Builder開發程式尤其是視窗程式,往往會用到BCB的特定元件,這些原件並不存在於微軟視窗系統中,所以程式開發完成必須將所用到的BCB元件一併編譯成exe檔,如此程式才能執行,這就像以往使用VB開發程式常常缺乏ocx檔是一樣的。 1.將Paths and Defines中的Build configuration設為Release。 2.將Linker中的Linking的Dynamic RTL取消。 3.將packages中的Build with runtime packages取消。 如此即可

直角座標、極座標之轉換

圖片
x = radius * cos(angle) y = radius * sin(angle) angle = atan(y/x) radius = sqrt(x*x+y*y)   atan : 反正切 sqrt : 平方根值 帶入以上公式即可作兩個座標系之轉換

在Ubuntu上使用netbeans6.9編輯C++

1.在ubuntu上已預設安裝 C 編譯器 gcc 但 C++ 編譯器沒有安裝,所以要從Synaptic套件管理器中   安裝 g++,請在套建中選較新版本安裝。 2.安裝完成後,打開netbeans6.9 工具 -> 選項 -> C++ -> Built Tool頁簽 -> C++ Compiler 填入   /usr/bin/g++-4.1(這裡的版本編號視您所下載的而有所不同)。 3.接下來在 Code Assistance 頁簽中的 C++ Compiler 依序加上 Include Directories 如下列   ● /usr/include/c++/4.1.3/i486-linux-gnu      ● /usr/include/c++/4.1.3   ● /usr/include/c++/4.1.3/backward   ● /usr/local/include   ● /usr/lib/gcc/i486-linux-gnu/4.1.3/include   ● /usr/include ☆ 請注意:以上順序請勿顛倒,因 C/C++ 在 include 時有順序問題,請特別注意!  4.如此就可以在netbeans上編輯C++程式了。  

當除數為0時的SQL語法

當除數為0時的SQL語法 select case a when a = 0 then 0 else b/a end as '商數' from teblename

在 Blogger 上用 Google Code Prettify 顯示程式碼

先將下列文字貼到 範本-編輯HTML-找到 在上方加上 <link href="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css" rel="stylesheet" type="text/css"></link> <script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript"> </script> 再搜尋 標籤在後面加入 onload='prettyPrint();' 再來是要加上框框及一些顏色,到範本-自訂-進階-增加CSS .post .code { display: block; font-family: Courier New; font-size: 10pt; overflow:auto; background: #f3f3f3; border: 1px solid #ddd; padding: 10px 10px 10px 21px; line-height: 1.2; border-radius:3px; } 之後如下將想要框起來的文章如下格式填入即可 <pre class="prettyprint code"> 輸入想顯示的程式碼 </pre> 如果在框起來的文章中有html標籤, 可用"& lt;"取代'<',"& gt;"取代'>', "& amp;"  取代  "&"

Unity3D範例之3.DragRigidbody

 DragRigidbody.cs using UnityEngine; using System.Collections; public class DragRigidbody : MonoBehaviour { public float spring; public float damper; public float drag; public float angularDrag; public float distance; public bool attachToCenterOfMass; private SpringJoint springJoint; private Rigidbody body; // Use this for initialization void Start () { spring = 50.0f; damper = 5.0f; drag = 10.0f; angularDrag = 5.9f; distance = 0.2f; attachToCenterOfMass = false; } // Update is called once per frame void Update () { if(!Input.GetMouseButtonDown(0)) return; Camera mainCamera = FindCamera(); RaycastHit hit; //檢測滑鼠按鍵是否點擊 if(!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition),out hit,100)) return; //是否有點擊到剛性物體或剛性物體可被物理控制 if(!hit.rigidbody||hit.rigidbody.isKinematic) return; if(!springJoint){ //彈性物體是否存在 //新增一個名稱為"Rigidbody dragger"的遊戲物件 GameObject go = new GameObject("Rigidbody dr...

Unity3D範例之2.取得Unity3D上的所有物件

void Awake(){ Object[] objs = FindObjectsOfType(typeof(GameObject)); foreach(GameObject go in objs){ print("objname:"+go.name); } }

Unity3D範例之1.FPSWalker

FPSWalker.cs using UnityEngine; using System.Collections; [RequireComponent(typeof(CharacterController))] //js->@script RequireComponent(CharacterController) public class FPSWalker : MonoBehaviour { //請不要在這裡就將參數初始化 public float speed = 6.0f; public float jumpSpeed = 8.0f; public float gravity = 20.0f; private Vector3 moveDirection = Vector3.zero; private bool grounded = false; // Use this for initialization void Start () { //一定要在Start或Awake裡面做初始化,這樣才不會有參數值更改無效的問題 speed = 6.0f; jumpSpeed = 8.0f; gravity = 20.0f; moveDirection = Vector3.zero; grounded = false; } // Update is called once per frame void FixedUpdate () { if(grounded){ //取得自身座標 moveDirection = new Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical")); //轉換自身座標為世界座標 moveDirection = transform.TransformDirection(moveDirection); //x,y,z向量值乘與speed moveDirection *= speed; //有按到Edit-Project Settings-Input中Ju...
Unity3D 使用C#注意事項: 1.繼承於MonoBehaviour       public class NewBehaviourScript:MonoBehaviour{...} //Unity C#腳本建立時會自動產生 2.在Awake或Start函式中做初始化 3.類別名稱需與檔案名稱相同 4.Coroutines(協同程序) 相較於C#有不同的語法      C#中有所謂的Thread來實現多執行緒的操作,但在Unity3D中有些元素是不能操作的,      這個時候就可以用Coroutines來實現Thread,做法是使用StartCoroutine("function_name")來完            成,其中function_name的function以IEnumerator來實做,範例如下:          StartCoroutine("func");  //也可以寫成StartCoroutine(func());      IEnumerator func(){           while(true){              yield return 1;  //數字1是畫面更新一次就返回一次,或是寫成             // yield return new WaitForSeconds(0.5f);  每0.5秒返回一次           }      } 5.不要使用命名空間(namespace) 6.成員變數會條列在Inspector中    當所寫的Script賦予某物件後,Script的成員變數會條列顯示在Inspe...

ADB server didn't ACK

最近在連接android裝置時,突然出現一個怪問題,就是adb tool 如法找到連接上USB的android裝置,一直以為是裝置上ROM的問題,但奇怪的是連我的android手機也無法找到,後來找到原因了,原來是豌豆夾2 wandoujia_daemon.exe 佔用了5037這個埠,於是用工作管理員將它幹掉後就可以了。 解決步驟 1. netstat -a -o (查佔用埠) 2. 找到哪隻程式占用了5037埠 3.記下PID 4.開工作管理員關閉它 5.收工

C# 調用 C/C++ DLL 資料型態之對應

最近使用C#須呼叫win32 API 須用上一些資料轉換,在網路上蒐尋到一些文件先列出來 方便以後查詢 C++中的DLL函數原型為 extern "C" __declspec(dllexport) bool 方法名一(const char* 變數名稱1, unsigned char* 變數名稱 2) extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 變數名稱 1, char* 變數 名稱 2) C#調用C++的DLL搜集的資料型態轉換對應如下 c++:HANDLE(void   *)                                          ----    c#:System.IntPtr c++:Byte(unsigned   char)                                   ----    c#:System.Byte c++:SHORT(short)                                               ----    c#:System.Int16 c++:WORD(unsigned   short)                 ...

C++ 讀書筆記(stdafx.h)

使用VC自動產生console程式時,IDE會自動產生stdafx.h這個檔,並且將其引入 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]){       return 0; } stdafx.h 基本上會包含比ISO/ANSI 標準C++更早的標準I/O檔"stdio.h",以及Microsoft專為文字功能所定義的標頭檔"tchar.h",所以stdafx.h的義意就是希望我們將需要include的檔案均寫在此,這樣將來如果別人來維護自己的程式時也會比較好維護。

Pandaboard編譯Launcher

要編譯pandaboard的Launcher可以由下載下來的原始碼中取得,位置在 /mydroid/packages/apps裡面,我們可以將Launcher2的整個目錄copy下來,然後貼到eclipse中你所指定的workspace中。 再來就是新增一個android的專案,專案名稱就取名叫Launcher2。 OK!接下來就新增一個Android Project 選擇 Create project from existing source,source 來源選擇剛剛的Launcher2資料夾,Android SDK 選擇2.3.3,專案生成後會出現很多錯誤的 紅色XX,可以不必理會,滑鼠指到專案Launcher2按下右鍵選擇功能表的 Android Tools->Export Unsigned Application Package 生成我們的Launcher2.apk即可。 如果覺得紅色XX很礙眼到 這裡 觀看解決方式,但是我試過這樣雖然沒了紅色XX,但編譯成apk檔時會有問題,所以在修改程式完成後,要編譯成apk檔前,先將上述網站所加入的lib從專案移除,再用Android Tools編譯apk即可。這也是我目前所使用的方式。

TI Pandaboaed Android 永不需解鎖

      一般在手機上我們可能需要鎖住螢幕來避免誤撥手機,但如果我們是將Android當作系統電 腦,如監控,遊戲機台等,我們就不需要鎖住螢幕了,另外休眠也可以一並解除。 作法如下: 1.解除休眠     打開   frameworks/base/packages/SettingsProvider/res/values/defaults.xml     找到    60000     將60000改為-1,這樣就不會休眠了。 2.永不鎖螢幕    打開        /frameworks/base/policy/src/com/android/internal/policy/impl /KeyguardViewMediator.java    找到     private boolean mExternallyEnabled = true;    將 true 改為 false 即可 以上作完後重新編譯即可

TI Pandabaord Android 開機SD之建立

        在使用Pandaboard時由於文件只提供RS232敲入命令及參數的方式開機,使得可用性不高, 再則Pandaboard並未提供flash所以不能刷入系統,官方文件最後的eMMC製作方式也是行不通, 再來還有網友提供boot.script的方式,測試過還是行不通,呵呵,有點窮途末路的感覺。只好由 source code來下手了,作法如下: 繼續閱讀,請輸入密碼... 再重新編譯後,即可使用SD卡開機,完全脫離RS232囉

TI Pandaboard Android 螢幕解析度設定

        由於 pandaboard 的預設螢幕輸出是hdmi且resolution是1920 x 1080,這樣在開發遊戲時可能會因為螢幕解析度太高而導致FPS偏低。所以我們必須改變螢幕解析度。          這在pandaboard的官方網站文件上是說可以在bootargs上加上參數即可改變,但似乎沒有效果,所以只好由source code下手囉,方式如下: 繼續閱讀,請輸入密碼...