[解決済み] SDL2 パッケージを提供する必要なモジュールはありません。
2022-02-15 10:37:20
質問
sdl2 パッケージを以下の場所からインポートしようとしています。 https://github.com/veandco/go-sdl2 . Windows版readme.mdに記載されている全ての手順に従いました。mingw64をインストールし、cmdで実行します。
go get -v github.com/veandco/go-sdl2/sdl
動作は問題ないのですが、試しにやってみると
go run .\sdl2.go
こんなエラーが出ました。
sdl2.go:4:2: no required module provides package github.com/veandco/go-sdl2/sdl: working directory is not part of a module
私の別のコンピュータでは完璧に動作しますが、このリポジトリをクローンして、別のラップトップにパッケージをインストールすると、多くの問題が発生しました。このケースについてより多くの情報を得るために、私のテストソースをここに置きました。
package main
import (
"github.com/veandco/go-sdl2/sdl"
"fmt"
)
const winWidth, winHeight int = 800, 600
type color struct {
r, g, b byte
}
func setPixel(x, y int, c color, pixels []byte) {
index := (y * winWidth + x) * 4
if index < len(pixels)-4 && index >= 0 {
pixels[index] = c.r
pixels[index+1] = c.g
pixels[index+2] = c.b
}
}
func main() {
winWidth := 800
winHeight := 600
window,err := sdl.CreateWindow("Testing SDL2", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
int32(winWidth) ,int32(winHeight), sdl.WINDOW_SHOWN)
if err != nil {
fmt.Println(err)
return
}
defer window.Destroy()
renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Println(err)
return
}
defer renderer.Destroy()
tex, err := renderer.CreateTexture(sdl.PIXELFORMAT_ABGR8888, sdl.TEXTUREACCESS_STREAMING, int32(winWidth), int32(winHeight))
if err != nil {
fmt.Println(err)
return
}
defer tex.Destroy()
pixels := make([]byte, winWidth*winHeight*4)
for y := 0; y < winHeight; y++ {
for x := 0; x < winWidth; x++ {
setPixel(x,y, color{byte(x % 255),byte(y % 255), 0}, pixels)
}
}
tex.Update(nil,pixels,winWidth*4)
renderer.Copy(tex,nil,nil)
renderer.Present()
sdl.Delay(2000)
}
解決方法は?
によると Go 1.16 の新しいモジュールの変更点 ブログ
go コマンドは、go.mod が存在しない場合でも、デフォルトでモジュールを考慮したモードでパッケージをビルドするようになりました。これは、すべてのプロジェクトでモジュールを使用するための大きな一歩です。
ブログで提案されているように、GO111MODULEの値をautoに変更します。
go env -w GO111MODULE=auto
を実行すると、問題が解決します。
関連
-
[解決済み】golangでデータ構造をディープコピーする
-
[解決済み] Go モジュールのローカル リポジトリとして Artifactory を使用する方法
-
[解決済み] ParseFormはいつ使うべきで、FormValueとPostFormValueはいつ使うべきですか?
-
[解決済み] キューの実装はありますか?
-
[解決済み] 関数呼び出しで「値として使用」される
-
[解決済み] goでローカルパッケージをインポートするには?
-
[解決済み] golangでnilはどういう意味ですか?
-
[解決済み】C言語の三項演算子に相当するGoの慣用句は何ですか?
-
[解決済み】データ(型インターフェース{})を文字列に変換できない:型アサーションが必要
-
[解決済み】gopathを使わずにローカルパッケージをインポートする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Goプロジェクトのビルド時に「XXXパッケージはGOROOTにありません」と表示される。
-
[解決済み] Goで配列を反転させるにはどうしたらいいですか?
-
[解決済み] 構造体のマップのデフォルト値は何ですか?
-
[解決済み] Notepad++ 用の Go 言語プラグイン
-
[解決済み] ParseFormはいつ使うべきで、FormValueとPostFormValueはいつ使うべきですか?
-
Windowsのプロパティダイアログボックスのエンコーディングの問題 ファイル名、ディレクトリ名、ボリュームラベルの構文が正しくありません。
-
[解決済み] goでローカルパッケージをインポートするには?
-
[解決済み] 環境変数GOPRIVATEの設定方法
-
[解決済み] "宣言されているが使用されていない "という迷惑なエラーを回避する方法
-
[解決済み】go getでインストールしたパッケージの削除について