Comments (1)
問題を起こしていたメソッドの一つ(修正済みのやつ)。
/// <summary>
/// 半角ASCII文字かどうかを判定します。
/// </summary>
/// <param name="target">判定対象</param>
/// <returns>該当:true / 非該当:false</returns>
[DllImport("kanaria_core.dll", EntryPoint = "is_narrow_ascii_for_utf16",
CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
[return:MarshalAs(UnmanagedType.I1)]
public static extern bool IsNarrowAscii(char target);
これの[return:MarshalAs(UnmanagedType.I1)]という設定がなかったために起こっていた。
以下原因。
Rustのbool型は1バイト分しかレジスタorメモリに書かない(推測)。
だけど、C#からマーシャリング云々で取得されるのはデフォルトで4バイト(推測)。
のこりの3バイト分にゴミデータが混入していた場合、falseの物がtrueに変わってしまう。
そこで、MarshalAsで1バイトだけ見るように明示してあげると、
Rustが書いた1バイトをピンポイントで拾ってくるようになる。
…かなと。比較的早めに情報が見つかってよかった…
from kanaria.
Related Issues (18)
- 【他】RustDocの公開 HOT 2
- パッケージ管理ツール経由でのインストール対応(Rust) HOT 1
- 【Java】ラッパー作成 HOT 2
- パッケージ管理ツール経由でのインストール対応(C#) HOT 1
- Readme.mdの整備 HOT 2
- 【Java】パッケージ管理ツール経由でのインストール対応 HOT 1
- 【Rust】KanaUtilsの非ASCIIの記号判定 HOT 1
- 【Rust】RustDocのドキュメンテーションテストで失敗
- 変換速度の改善 HOT 3
- 【他】RustDocの残骸削除
- 【Rust】半角・全角の変換対象文字種別指定対応 HOT 2
- クロスコンパイル処理をRustic化
- 【他】CI環境がほしい HOT 1
- ワークフロー上のビルドがコケてる
- IsXXXXX()の追加 HOT 1
- 根本的な構成見直し
- UCSStrメソッドチェーン対応
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kanaria.