LoginSignup
0
1

More than 5 years have passed since last update.

c++ builder XE4 > 正規表現 > `toupper`が....System.RegularExpressionsAPIから参照されています > IDE環境を変更しない対応方法

Last updated at Posted at 2016-06-16
動作確認
C++ Builder XE4

http://qiita.com/7of9/items/8c0d1362ed2950effa57
で試した正規表現の処理を実環境で使おうとしたら以下のようなエラーが出た。

`toupper`が....System.RegularExpressionsAPIから参照されています

プロジェクトオプション > パッケージ > 実行時パッケージ > 実行時パッケージを使ってリンク をfalseにしている時に発生するようだ。

回避策

回避策はいくつか検索で見つかったが、IDE環境自体を変更する必要がない方法としては以下があるようだ。

Unit1.cppに以下を追加する。実際にやってみたらエラーがなくなった。

#ifdef _WIN32 && !defined(_WIN64)
#pragma alias "toupper" = "_toupper"
#pragma alias "tolower" = "_tolower"
#pragma alias  "isupper" = "_isupper"
#pragma alias  "isalnum" = "_isalnum"
#pragma alias  "isalpha" = "_isalpha"
#pragma alias  "iscntrl" = "_iscntrl"
#pragma alias  "isdigit" = "_isdigit"
#pragma alias  "isgraph" = "_isgraph"
#pragma alias  "isleadbyte" = "_isleadbyte"
#pragma alias  "islower" = "_islower"
#pragma alias  "isprint" = "_isprint"
#pragma alias  "ispunct" = "_ispunct"
#pragma alias  "isspace" = "_isspace"
#pragma alias  "isxdigit" = "_isxdigit"
#pragma alias  "strchr" = "_strchr"
#pragma alias  "strncmp" = "_strncmp"
#pragma alias  "memcmp" = "_memcmp"
#pragma alias  "memmove" = "_memmove"
#endif

正規表現を多量に使うことになった場合にはIDE環境自体を変更するほうがいいかも含めて検討することになる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1