Luaのビット演算でbit32を使用できないエラーが発生する

このQ&Aのポイント
  • Luaの学習中に、bit32を使用したビット演算でエラーが発生しました。
  • requireをコールしても、bit32が見つからないというエラーメッセージが表示されます。
  • 解決策を教えてください。
回答を見る
  • ベストアンサー

Luaのビット演算

Luaの学習をしています。 Luaのビット演算でbit32を使用してみようと思ったのですが、 実行すると以下のエラーが表示されました。 attempt to index global 'bit32' (a nil value) 色々なサイトを参考にrequireをコールしてみたのですが やはりエラーになりました。 -- トライ1 require("bit32") value = bit32.band(0x1234, 0xFF00) -- トライ2 Bit32 = require("bit32") value = Bit32.band(0x1234, 0xFF00) -- トライ1やトライ2実行時のエラー module 'bit32' not found bit32を使用可能にするにはどうすれば良いのでしょうか? 【補足】 OS:Windows 7 SP1(64bit) 開発環境:Lua Development Tools その他:Luaプロジェクトの新規作成ウィザードで、「lua-5.2」を指定しています

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://www.lua.org/cgi-bin/demo で試した感じだと、requireとか余計なことなしで大丈夫だと思うのですが? io.write(bit32.band(0x1234, 0xFF00)) Luaはよく知りませんが、bit32って標準機能ですよね? http://www.lua.org/manual/5.2/manual.html#6.7

pierrot55
質問者

お礼

回答ありがとうございます。 Luaバージョンが格納されたグローバル変数_VERSIONというものがあったので 表示してみたところ、バージョンは5.1でした…。 Lua Development Toolsの新規作成ウィザードで「lua-5.2」が指定出来たので 5.2で動作していると思っていたのですが(-_-;) 大変失礼しました。

関連するQ&A

  • packageの中からのrequireがうまくいかない

    .pmファイルの中でrequireして別の.plファイルの中の関数を呼びたいのですがうまくいきません。 下記の例でmain.plを実行すると Undefined subroutine &module1::module2::hyoji のようになってしまいます。 どのようにしたら動くでしょうか --main.pl-- use module1; testprint(); --module1.pm-- package module1; sub testprint{   require "module2.pl"   hyoji(); #エラー    module2::hyoji(); # エラー   module1::module2::hyoji(); #エラー }1; module2.pl package module2; sub hyoji{   print "ZZZ"; }1; --main2.pl-- ちなみにこれは動きます require "module2.pl"; module2::hyoji();

    • ベストアンサー
    • Perl
  • 64ビットに変換したい…

    BIBLO MG / G 73 32bit を使用中の者ですが。何とか64 bit にしてパソコンの動作を速くしたいのですが、最初はwindows 10 アップグレードと32bit インストールして64 bit のインストールを実行しましたが、エラーが出ます。ネットで調べるとパソコンは64bit に変換可能という事です。色々な人の相談の結果、富士通のwindows 7 のリカバリーディスクを購入して初期化し、その後にwindows 7 OS 64 bit を購入してインストールしたら64 bit 変換出来るのではないかと思っていますが、どうでしょうか? ※OKWaveより補足:「富士通FMV」についての質問です。

  • 64bitの実行ファイルを実行する場合

    開発機(64bit)でCのソースをコンパイル・実行ファイル作成をし、本番機(64bit)に実行ファイルだけFTP転送します。 そして本番機には64bitのCのコンパイラ(cc)は入ってなく、32bitのものが入っています。 そういう環境のせいか、signal 11を出してプログラムは停止します。 #開発機では正常稼動しています Cの実行ファイルが実行されるときはコンパイラが影響するものなのでしょうか? #影響するようでしたら上記エラーが出るのも納得できるのですが。。 申しわけありませんが、何かアドバイスがありましたらよろしくお願いします。

  • OBS Studio 64bit エラー

    当方環境 OS:Windows 7 64bit SP1 キャプチャーボード:MonsterX U3.0R OBS Studio:Ver 18.0.1 先日、PCのクリーンインストールを実行し、OBS Studioをインストールしましたが OBS 64bit版を実行しようとすると「Could not find any D3Dcompiler libraries」という エラーが出て起動できません。 以前もPCのクリーンインストールをした時にDirectXの最新版を自分でインストールした 覚えがあるのですが、これは関係あるのでしょうか? 今のところ何が原因なのかわからなく、色々検索してみましたが有益な情報は得られませんでした。 ちなみに、32bit版は実行できます。 64bit版じゃないとPS4の画面が取り込めないので困っています。 ご教授お願いします。

  • 今、Win7 32bitから64bitへかえようとしております。

    今、Win7 32bitから64bitへかえようとしております。 64bit版のisoをダウンロードし、マイクロソフトのHPにある通りにフラッシュメモリにいれました。 しかし100パーセントの所で下記エラーが出てしまいます。 ファイルは正常にコピーされましたが、USB絵羽いすお起動可能にするbootsect.exeを実行できませんでした。bootsectに関するヘルプが必要な場合、詳しくは上のオンラインヘルプリンクをクリックしてください。 setupを開いても、互換性がないとのエラーでどうすることもできません。 こんな感じで出るので、クリックして見て見たのですが全然わかりませんでした。 あまりPCには詳しくないので、非常に困っています。 どなたか解決策がわかる方。教えてください。 お願い致します。

  • 1bppファイルを8bpp(raw)に変換する。

    環境 Windows7 VS2008 SP1 1bppの画像を8bppに変換しようとしているのですが うまくいきません。自分ではこれで 合っていると思うのですが・・・ 何かアドバイスお願いしますm(__)m int Main1bppTo8bpp(WCHAR *filename,int width,int height) { //width,heightは8bppになったときの幅,高さを指定する。 FILE *fpt; _wfopen_s(&fpt,filename,L"rb"); if(fpt==0x00) { MessageBox(NULL,L"1bppTo8bpp Error",L"1bppTo8bpp Error",MB_OK); return -1; } else { unsigned char *layer,*Output; layer=(unsigned char*)calloc(((width/8)+1)*height*sizeof(unsigned char),sizeof(unsigned char)); Output=(unsigned char*)malloc(width*height); //読み込み fread(&layer[0],sizeof(unsigned char),((width/8)+1)*height,fpt); FILE *fpt_output; _wfopen_s(&fpt_output,L"1bppTo8bpp.raw",L"wb"); int i,j,flag=0x00; for(i=0;i<((width/8)+1)*height;i+=((width/8)+1)) { for(j=0;j<((width/8)+1);j++) { //8bit目 if((layer[i+j]&BIT8)==BIT8) { Output[i+j+flag]=0x00; } else { Output[i+j+flag]=0xff; } //7bit目 if((layer[i+j]&BIT7)==BIT7) { Output[i+j+flag+1]=0x00; } else { Output[i+j+flag+1]=0xff; } //6bit目 if((layer[i+j]&BIT6)==BIT6) { Output[i+j+flag+2]=0x00; } else { Output[i+j+flag+2]=0xff; } //5bit目 if((layer[i+j]&BIT5)==BIT5) { Output[i+j+flag+3]=0x00; } else { Output[i+j+flag+3]=0xff; } //4bit目 if((layer[i+j]&BIT4)==BIT4) { Output[i+j+flag+4]=0x00; } else { Output[i+j+flag+4]=0xff; } //3bit目 if((layer[i+j]&BIT3)==BIT3) { Output[i+j+flag+5]=0x00; } else { Output[i+j+flag+5]=0xff; } //2bit目 if((layer[i+j]&BIT2)==BIT2) { Output[i+j+flag+6]=0x00; } else { Output[i+j+flag+6]=0xff; } //1bit目 if((layer[i+j]&BIT1)==BIT1) { Output[i+j+flag+7]=0x00; } else { Output[i+j+flag+7]=0xff; } flag=flag+8; } flag=0x00; } //最終的な「fwrite」はここでする。 fwrite(&Output[0],sizeof(unsigned char),width*height,fpt_output); free(layer); free(Output); fclose(fpt); fclose(fpt_output); } return 0;

  • 実行時エラー '424'  オブジェクトが必要です

    デバッグ中で、下記のエラーが出て、進めません。 実行時エラー '424' オブジェクトが必要です。 Dim x1, x2, st1, st2, st3 As String x1 = Cells(41, 5).Value Set st1.Value = Application.WorksheetFunction.VLookup(x1, Range(Cells(102, 2), Cells(106, 4)), 3, False) x1  Cells(102, 2)  Cells(106, 4)には値が入っています。 アドバイス宜しくお願い致します。

  • 64bit windows7にPHPを入れたい

    http://ameblo.jp/shiroharakuina/entry-10406305652.htmlを参考にしながら、64bit版window7にapacheとPHPをインストールしようとしたのですが、apache単体では問題なく利用出来るのですが、PHPの利用でエラーが発生します。 作業としては、参考URLの通りにC直下にapacheとPHPをインストールし、apacheのhttp.confにPHP関連の記述をしたところエラーダイアログが出て起動できないみたいです。参考URLでいいますと、「2-2.PHP5.3.1の動作確認」の箇所まで書いてある通りに行いました。 以下がhttp.confのエラーが出る箇所です。2つともパス自体は間違っておりません。 ---------------------------------------------------------------------------- PHPIniDir "C:\PHP" LoadModule php5_module "C:\php\php5apache.dll" ---------------------------------------------------------------------------- 環境は以下になります。 OS:windows7 64bit apache : httpd-2.2.17-win32-x86-no_ssl PHP : php-5.3.5-Win32-VC6-x86.zip 誰かご教授願いします。 以上

  • 数値を2進数文字列に変換するものなんですが・・・

    数値を2進数の文字列に変換するプログラムを関数として作成しているんですが、わからないことがあるのでお願いします。 char *itob(int value, int size, char binary[]) { int count = 0; /* binaryの添え字 */ int bit = size * 8; /* ビットになおす */ int mask = 1 << bit - 1; /* 先頭ビットに1を立てる */ /* 数値を2進数の文字列に変換する処理 */ do { if(value & mask) { /* valueとmaskのAND(論理積) */ binary[count] = '1';/* '1'を代入 */ }else { binary[count] = '0';/* '0'を代入 */ } value <<= 1; /* valueを左へ1ビットシフト */ count++; /* countを1たす */ }while(count < bit); /* 繰り返しを行う条件 */ binary[count] = '\0'; /* 最後に'\0'を入れる */ return binary; /* 変換した値を戻り値として返す */ } この前にもプログラムがありますが、コンパイルして実行する際に 10001 1110 と入力したら、 11111 という答えを出したいのですが、 これを実行すると、 00000000000000000000000000011111 となってしまいます。 これを11111とするためにはプログラムにどのような処理をすればよいのかわかりませんのでどなたかおわかりのかた解説をお願いします。

  • Vista64bitとVS2005における、MsScriptのCLSI

    Vista64bitとVS2005における、MsScriptのCLSIDの違いについて。 【動作環境】 ・Windows Vista 64bit ・VS2005 sp2 ・IIS7 ・Oracle 11g 以上の環境で、.NETの自社パッケージソフトの運用テストを行っています(32bit→64bitへの移行対策です) その中で、「MsScriptControl.ScriptControl」という参照設定を行っているのですが、ビルドは成功するのに、実際にWEBで運用するとこのdllを使用する際に参照エラーになってしまいます。 調べてみた所、レジストリ内で 「MsScriptControl.ScriptControl」のCLSIDは「0E59F1D5-…」なのに対し、実際に「C:\Program Files\Microsoft Script Control\msscript.ocx」が入っている場所のTypeLibのCLSIDは、「0E59F1D2-…」となっており、一文字だけ違っています。 このためだと思うのですが、WEBを実行中にMsScriptを呼び出そうとすると、 エラーが起きました(CLSID {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154。) というエラーが起きてしまいます。 何故、同じファイルを参照しているはずなのにCLSIDがレジストリ内で違ってしまっているのか、調べているのですが情報が少なくて行き詰っております。 VS2005のコンパイル自体はAny CPUで行っておりますので、MsScript自体が32bitであることは問題ありません。 どうか、ご助力いただけたらと思います。 どうぞ、よろしくお願いします。

専門家に質問してみよう