万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

変換 8進数数字 C#

c# - I have a string of octal escapes that I need to convert to Korean text - not sure how - Stack Overflow

string source =@"\343\201\213\343\201\247\343\201\260";

こんなやつを変換

XamarinのAndroid SDK

/Users/ユーザ名/Library/Developer/Xamarin/android-sdk-macosx

ここにある。 f:id:shinriyo:20170312184117p:plain

EntryPointNotFoundException

UnityでDLLを使う UnityでDLLを使う | TVML

__declspec mac gcc C++

error: unknown type name '__declspec' のエラー。

本の虫: attributeは難しい

Macというかgccでは__attribute__なの?

 __declspec(dllexport)

を単純に

 __attribute__(dllexport)

置き換え。

すると

error: expected '(' after '('

(を二重にしたw

__attribute__((dllexport))

ここ見る c++ - GCC (ARM) equivalent to __declspec(dllexport) - Stack Overflow

おそらくどっちか?

   #define idaman          EXTERNC __attribute__((visibility("default")))
    #define ida_local       __attribute__((visibility("hidden")))

defaultの方にした。

こうではない

g++ -shared -std=c++11 -Iinclude Source.cpp ../mruby/build/host/lib/libmruby.a -o mruby-sample.dll

これ

g++ -shared -std=c++11 -Iinclude Source.cpp ../mruby/build/host/lib/libmruby.a -dynamiclib -fPIC  -o mruby.dylib

最後

g++ -shared -std=c++11 -Iinclude Source.cpp ../mruby/build/host/lib/libmruby    .a -dynamiclib  -arch x86_64 -o mruby.bundle

これmruby.bundlePluginsに入れる。 Unityを再起動しないとミスったときにおかしくなる。

mrubyの実行 macOS 10.12.3

mrubyをダウンロードした。 mruby-1.2.0.tar.gz

展開

tar zxvf mruby-1.2.0.tar.gz

ビルド

cd mruby
ruby minirake

mrubyでコンパイル

sample.cpp作る

#include <stdlib.h>
#include <stdio.h>
#include "mruby.h"
#include "mruby/compile.h"

int main()
{
    auto mrb = mrb_open();
    auto ai = mrb_gc_arena_save(mrb);
    mrb_load_string(mrb, "5.times.each {|i| p i * i }");
    mrb_gc_arena_restore(mrb, ai);
    mrb_close(mrb);
    return 0;
}
g++ -std=c++11 -Iinclude sample.cpp ../mruby/build/host/lib/libmruby.a

../mruby/build/host/lib/libmruby.aがないと

Undefined symbols for architecture x86_64:
  "_mrb_close", referenced from:
      _main in sample-20efc4.o
  "_mrb_gc_arena_restore", referenced from:
      _main in sample-20efc4.o
  "_mrb_gc_arena_save", referenced from:
      _main in sample-20efc4.o
  "_mrb_load_string", referenced from:
      _main in sample-20efc4.o
  "_mrb_open", referenced from:
      _main in sample-20efc4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)