1

F#を使い始めたばかりなので、非常に単純なものが欠落している可能性がありますが、誰も遭遇していないように見えるコンパイラエラーが発生します。

署名ファイル'AsyncSocket'には、対応する実装ファイルがありません。実装ファイルが存在する場合は、署名と実装ファイルの「モジュール」宣言と「名前空間」宣言が一致していることを確認してください。

コードに問題がある可能性があると思ったので、msdnから例をコピーして、まったく同じものを取得しました。何が起こっているのか分かりますか?

サイン:

namespace Library1
  module Module1 = 
    val function1 : int -> int
    type Type1 =
        new : unit -> Type1
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Sealed>]
    type Type2 = 
        new : unit -> Type2
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Interface>]
    type InterfaceType1 =  
        abstract member method1 : int -> int
        abstract member method2 : string -> unit

実装:

namespace Library1
module Module1 =

    let function1 x = x + 1

    type Type1() =
        member type1.method1() =
            printfn "test1.method1" 
        member type1.method2() =
            printfn "test1.method2"


    [<Sealed>]
    type Type2() =
        member type2.method1() =
            printfn "test1.method1" 
        member type1.method2() =
            printfn "test1.method2"

    [<Interface>]
    type InterfaceType1 =
        abstract member method1 : int -> int
        abstract member method2 : string -> unit
4

1 に答える 1

5

このエラーは、署名ファイルと実装ファイルの名前が異なる場合に発生します(拡張子はありません)。署名と実装は、それぞれ<same-name>.fsiとという名前の別々のファイルにある必要があり<same-name>.fsます。パッドがコメントしたように、署名ファイルは、ビルド順序(またはソリューションエクスプローラーツリービュー)で実装ファイルの直前に配置する必要があります。

于 2013-02-20T17:20:45.697 に答える