2017-03-01 34 views
5

Tôi đang tìm một ví dụ đơn giản, tối thiểu cho một dự án Julia bao gồm một số mã C như một phần của dự án. Tôi cần dự án để biên dịch mã C thành * .dll và sau đó có một số mã Julia có thể gọi thành công một hàm từ đó * .dll trên Windows.Ví dụ làm việc tối thiểu của dự án Julia và C hỗn hợp trên Windows

Tôi gặp rất nhiều sự cố khi làm việc trên Windows và thực sự hữu ích khi bắt đầu từ một số ví dụ mà tôi biết thực sự hoạt động và khắc phục sự cố từ đó dự án lớn hơn của tôi không hoạt động.

Trường hợp sử dụng của tôi đang gọi thư viện portaudio để hiển thị độ trễ thấp của âm thanh, sử dụng mô hình đa luồng không khóa. Đây không phải là thực sự có thể viết trong julia vào thời điểm này, mà tôi biết: Tôi thực sự cần một ngôn ngữ cấp hệ thống như C. Nhưng tôi muốn phần còn lại của dự án được ở Julia.

+0

Tôi có và tôi đã có rất nhiều thành công khi gọi mã c từ một bên thứ 3 * .dll (ví dụ: được cài đặt qua WinRPM.jl). Nhưng những gì tôi đang cố gắng làm là tạo * .dll của riêng tôi và gọi một hàm từ đó. Tôi nên yêu cầu mã mẫu ở đâu? – HaberdashPI

Trả lời

4

This blog post chứa khá nhiều ví dụ làm việc tối thiểu. Nó biên dịch một mã liên kết nhỏ tới GSL và sau đó viết khoảng 10 dòng Julia để sử dụng nó. Ngay cả trong không gian đó cũng cho thấy cách chuyển một hàm do Julia xác định đến C.

+0

Cảm ơn bạn đã liên kết! Tôi không thấy bất cứ điều gì cụ thể cho Windows trong bài đăng trên blog này. Tôi không gặp vấn đề gì khi làm việc trên Mac OS X (và tôi giả sử điều này cũng đúng với Linux). Tôi tin rằng các vấn đề tôi đang chạy vào có liên quan đến hậu cần biên dịch và liên kết đến một * .dll trên Windows cụ thể. – HaberdashPI

+0

Vâng, không có Windows trong đó. Lấy làm tiếc. –

1

Đây là một ví dụ hoàn hảo, nhưng rất rất gần với. Tôi đã không chạy mã này, nhưng các poster tuyên bố rằng nó biên dịch và chạy thành công trên Windows.

+0

Cập nhật: sử dụng ví dụ này tôi đã quản lý để có được một * .dll làm việc trên Windows. Điểm mấu chốt là bạn cần phải chắc chắn rằng tất cả các phụ thuộc cho một dll có thể được tìm thấy. Bạn có thể sử dụng Dependency Walker (được đề cập trong liên kết) để tìm ra nếu bạn cần thêm/đổi tên bất kỳ dll phụ thuộc vào thư mục bạn tải dll của riêng bạn từ. – HaberdashPI

Các vấn đề liên quan