Feeds:
文章
迴響

Archive for the ‘C/C++’ Category

環境

  1. Windows 10
  2. TDM-GCC x64 5.1.0
  3. CMake 3.8
  4. Python 2.7.7

注意

  1. sh.exe 不能在 PATH 環境變數中被找到, 如果安裝 Git 記得編譯前將路徑從 PATH 中移除
  2. gcc, cmake, python 所在路徑加到 PATH 環境變數

編譯

git clone https://github.com/BYVoid/OpenCC.git
cd OpenCC
cmake -H. -Bbuild -G "MinGW Makefiles" 
cmake --build build --config Release 

編譯結果

/build/src
    * libopencc.dll
    * libopencc.dll.a
    * Opencc_Export.h
    * /tools
        * libopencc.dll
        * opencc.exe
        * opencc_dict.exe
        * opencc_phrase_extract.exe
/data/config/*.json -- 配置檔
廣告

Read Full Post »

今天我就把 byte array 用 strncpy 複製…. 想說怎麼有時候會失敗. 萬惡的 \0 啊…

 

Read Full Post »

系統環境

  • Windows 7(64bits)
  • Python 2.7.2
  • Node 0.8.9
  • Visual Studio 2012

 

目錄結構

– binding.gyp
– hello.cc
– test.js
+ build
    + Release
        – hello.node

 

hello.cc

#include <node.h>
#include <v8.h>

using namespace v8;

Handle<Value> MethodArgs(const Arguments& args) {
HandleScope scope;

printf(“%d\n", args.Length());

if (args[0]->IsString() && args[1]->IsNumber() &&
args[2]->IsNumber() && args[3]->IsBoolean()) {

printf(“%s %d %f %d\n",
*String::AsciiValue(args[0]->ToString()),
args[1]->ToInteger()->Value(),
args[2]->NumberValue(),
args[3]->ToBoolean());

}

return scope.Close(Undefined());
}

Handle<Value> Add(const Arguments& args) {
HandleScope scope;

if (args.Length() < 2) {
ThrowException(Exception::TypeError(String::New(“Wrong number of arguments")));
return scope.Close(Undefined());
}

if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
ThrowException(Exception::TypeError(String::New(“Wrong arguments")));
return scope.Close(Undefined());
}

Local<Number> num = Number::New(args[0]->NumberValue() +
args[1]->NumberValue());
return scope.Close(num);
}

Handle<Value> Method(const Arguments& args) {
HandleScope scope;

printf(“%d\n", args.Length());

if (args[0]->IsString() && args[1]->IsNumber() &&
args[2]->IsNumber() && args[3]->IsBoolean()) {

printf(“%s %d %f %d\n",
*String::AsciiValue(args[0]->ToString()),
args[1]->ToInteger()->Value(),
args[2]->NumberValue(),
args[3]->ToBoolean());

}

return scope.Close(String::New(“world"));
}

void init(Handle<Object> target) {
NODE_SET_METHOD(target, “hello“, Method);
NODE_SET_METHOD(target, “add“, Add);
NODE_SET_METHOD(target, “testArgs“, MethodArgs);
}

NODE_MODULE(hello, init)

 

 

binding.gyp

{
“targets": [
{
“target_name": “hello",
“sources": [ “hello.cc" ]
}
]
}

test.js

var hello_module = require(‘./build/Release/hello.node’);
console.log(hello_module.hello());
console.log(hello_module.add(99, 1));
console.log(hello_module.testArgs(‘str’, 100, 300, true));

 

 

初始

node “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" configure

編譯

node “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" build

測試

node test.js

執行結果

參考資料

[1] http://snoopyxdy.blog.163.com/blog/static/601174402012102391344617/

Read Full Post »

Judge Onilne 1045 的解答

今天發現一個好玩的網站 Judge Online,裡面有許多程式問題可以來測驗一下你的功力,我今天嘗試解了 1045 ,有興趣的人可以參考看看
 

/*
 * Judge Online 1045 解答
 *
 * 問題描述:http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1045
 * 設計者:Chui-Wen Chiu
 * 開發環境:VC6+Win2K Pro
 * 開發日誌:
 * 2005.10.20 建立
 */
#include <iostream>
#include <cmath>
#include <cstdio>
using std::cerr;
using std::cout;
using std::cin;
using std::endl;
int main(){
 double vs, c, r, w, xc;
 int i,n;
 double* vr = 0; 
 char  buffer[32];
 cin >> vs >> r >> c >> n; 
 if (n>0){
  vr = new double[n];
 }else{
  cout << "no data" << endl;
  return 0;
 }
 for(i=0; i<n; ++i){
  cin >> w;
  if (r == 0 && w == 0 && c == 0){
   cerr << "warning: divide by 0" << endl;
   –i;
   continue;
  }else{
   xc = 1.0f/(w*c);  
   vr[i] = r*vs/(sqrt(r*r + xc*xc ));
  }
 } 
 for(i=0; i<n; ++i){
  sprintf(buffer, "%.3f", vr[i]);
  cout << buffer << endl;
 } 
 if (vr != 0){
  delete []vr;
 }
 return 0;
}
 

Read Full Post »

組語模擬 strlen 函數

雖然今天對於工作上有點不太愉快的事情發生,不過還是不會影響我最近研究組語的熱情,今天寫了一個模擬計算字串長度的函數,如下:
 
#include <string>
#include <iostream>
 
int strlen2(const char* pstr){ 
  __asm{ 
  mov ebx, 0               ; iterator
for: 
  mov edx, pstr;
  mov al, [edx][ebx]     ;
  inc ebx                     ;
  cmp al, 0                  ;
  jnz for
  mov eax, ebx            ;

  }
}
void main(void){
  const char str[] = "Hello Arick";
  std::string hello(str);
  const char* pstr = str;
  std::cout << strlen( hello.c_str() ) << ","
    << strlen2( hello.c_str() )
    << std::endl;
  std::cout << strlen( str ) << ","
    << strlen2( str )
    << std::endl;
  std::cout << strlen( str ) << ","
    << strlen2( pstr )
    << std::endl;
}
 
 

Read Full Post »

組語 1+2+3+…10

一層迴圈測試

 

#include <iostream>
void main( void )
{
 // 1+2+3+…+10 = 55
 int sum;
 __asm{  
  mov eax, 0  ;
  mov ecx, 1  ;
for:
  add eax, ecx ;  
  inc ecx   ;
  cmp ecx, 10+1 ;  
  jnz for   ;
  mov sum, eax;  
 }
 std::cout << sum;
}

Read Full Post »

終於找到 intel x86 的手冊

最近在玩組語,可惜缺少指令集,今天查找資料的時候終於找到官方手冊,有興趣的人可以到 http://support.intel.com/design/pentiumii/manuals/243191.htm 下載

Read Full Post »

Older Posts »