連続投稿申し訳ありません。川口です。

自己解決しました。
rb_cv_get() の第一引数に渡す値が間違っていました。
インスタンスを渡すのではなく、クラスを渡すのですね。

とうことで、Moge.c の moge_func() を以下のようにして動作することを確認しました。

VALUE moge_func(VALUE self)
{
    VALUE klass = CLASS_OF(self);
    VALUE val = rb_cv_get(klass, "@@val");
    if (val == Qnil) {
        printf("@@val : nil\n");
    }
    else {
        printf("@@val : %d\n", NUM2INT(val));
    }
    return Qnil;
}

お騒がせしました。

>川口です。
>
>
>>Ruby の C の拡張ライブラリからクラス変数を参照したいのですが、
>>rb_iv_get() を使うと nil を返してきます。
>>クラス変数を参照するにはほかの関数があるのでしょうか?
>>宜しくお願いします。
>(略)
>
>調べたところ、クラス変数を参照するには rb_cv_get() を使うということがわかりました。
>しかし、以下のようにソースを修正したところ、
>
>    VALUE val = rb_iv_get(self, "@@val");
>       
>    VALUE val = rb_cv_get(self, "@@val");
>
>クラス変数が初期化されていない、というエラーが出力されました。
>moge.rb:12:in `func': uninitialized class variable @@val in #<Class:0x806c788> (
>NameError)
>
>まだ何かおかしいところがありますでしょうか?