2017-03-01 7 views
5

プロジェクトの一部としてCコードを含むJuliaプロジェクトのための単純で最小限の作業例を探しています。 Cコードを* .dllにコンパイルして、Windows上の* .dll関数を正常に呼び出すことができるいくつかのJuliaコードを作成するプロジェクトが必要です。Windows上で混合JuliaとCプロジェクトの最小の実例

これはWindowsで動作するのに苦労しています。私が実際に知っているいくつかの例から始め、大きなプロジェクトがうまくいかない理由をトラブルシューティングするのは本当に役に立ちます。

私の使用例では、ロックレスのマルチスレッドモデルを使用して、低レイテンシーのサウンドを表示するためにportaudioライブラリを呼び出しています。これは、私が知っているこの時点では本当にjuliaに書くことはできません.Cのようなシステムレベルの言語が本当に必要です。しかし、残りのプロジェクトはJuliaにしたいと思います。

+0

私はサードパーティの* .dll(例えば、WinRPM.jl経由でインストールされた)からCコードを呼び出すことに成功しました。しかし、私がしようとしているのは、自分自身の* .dllを作成し、そこから関数を呼び出すことです。サンプルコードはどこに問い合わせるべきですか? – HaberdashPI

答えて

4

This blog postには、ほとんど最小限の作業例が含まれています。小さなリンカーコードをGSLにコンパイルし、使用するJuliaの約10行を書き込みます。それも、そのスペースにC.

にジュリア定義関数を渡す方法を示し
+0

リンクありがとう!このブログ記事では、Windows固有のものは何も表示されません。私はこれをMac OS X上で動作させることに問題はない(そして私はLinuxでも同じことが当てはまると仮定している)。私が実行している問題は、Windows上の* .dllへのコンパイルとリンクに関連していると私は信じています。 – HaberdashPI

+0

ええ、Windowsはありません。ごめんなさい。 –

1

このlinkは完璧な例ではありませんが、それは非常に非常にに近いです。私はこのコードを実行していませんが、Windows上でコンパイルして正常に動作すると主張しています。

+0

アップデート:この例を使用して、Windows上で* .dllを取得できました。要点は、dllのすべての依存関係を確実に見つける必要があることです。 Dependency Walker(リンクに記載されています)を使用して、依存DLLを自分のdllをロードするディレクトリに追加/名前を変更する必要があるかどうかを判断できます。 – HaberdashPI

関連する問題