2009-08-02 29 views
8

Tôi đang dùng first steps (hoặc có thể là các bước cuối cùng của tôi) trong GTK # trên Mono dành cho OSX. Tôi viết một file .cs và sau đó cố gắng biên dịch với mono:Câu hỏi mới: GTK # (Mono) trên OSX

gmcs -pkg:gtk-sharp-2.0 one.cs 

kết quả này trong thông điệp này

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory='' 

nào sẽ, rõ ràng, yêu cầu tôi biết những gì tôi đang làm. Tôi biết rằng

Installer Mono cho hệ điều hành MacOS X đi kèm với Gtk + và Gtk #, do đó bạn có thể bắt đầu xây dựng và chạy nền tảng GUI Gtk # ứng dụng bao gồm OSX."

Vì vậy, không có gì để cài đặt.

tôi tìm GTK2 đây

/opt/local/var/macports/sources/rsync.macports.org/release/ports/x11/gtk2/ 

chắc chắn được cài đặt bằng cài đặt Mono.

Phiên bản Gmcs là 2.4.2.2.

Chỉnh sửa: Miguel nói rằng tôi có điều gì đó kỳ lạ trong con đường của mình.

Tôi đã xóa tất cả Macports theo hướng dẫn dành cho Macports. Tôi đã cài đặt lại Mono từ .dmg. Đây là con đường hiện tại của tôi

export PATH=/opt/subversion:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin 

nhưng ngay cả khi chỉ sử dụng/usr/bin, nó vẫn không tránh được lỗi.

TẤT CẢ nội dung Mono là nơi nó được cho là, bao gồm tất cả nội dung trong số /Library/Frameworks/Mono.framework/Versions/Current. HOWEVER: lạ

/Library/Frameworks/Mono.framework/Versions/2.4.2.2/lib/gtk-sharp-2.0/ 

trống. Nhưng MonoDevelop chạy, nhưng không biết về Gtk (tôi đã bao gồm tất cả các tài liệu tham khảo mà nó biết) ...

Trả lời

9

Nhanh chóng và bẩn giải pháp:

cd /usr/local/bin 
sudo ln -s /Library/Frameworks/Mono.framework/Commands/pkg-config ./pkg-config 

Bây giờ gmcs bạn -pkg: ... lệnh sẽ làm việc.

Thông tin cơ bản: Tôi đã gặp sự cố chính xác này trên máy Mac mới và cài đặt Mono mới. Để lại cho tôi gãi đầu của tôi cho một vài ngày cho đến khi tôi mất một cái nhìn cận cảnh các thông báo lỗi:

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory='' 

Nó nói rằng nó không thể chạy chương trình, vì vậy tôi đã làm một

which pkg-config 

Đó đến lên trống, vì vậy tôi nghĩ có lẽ nó không thể chạy vì nó không nằm trong đường dẫn. Và hóa ra là nó.

+0

Cảm ơn Yawar. Tôi sẽ đánh dấu đây là câu trả lời hay nhất hiện nay, và trong tháng tới (đó là tháng 12 năm 2009) tôi sẽ đưa ra một cảnh quay và xem nó có hiệu quả với tôi hay không. Vấn đề là tôi đã không chạm vào công cụ này trong một vài tháng (được sử dụng Winforms tinh khiết). Chắc chắn có vẻ đúng. –

+1

Tùy chọn khác (tốt hơn?) Là chỉ cần thêm thư mục bin đơn vào đường dẫn của bạn. 'export PATH = $ {PATH}:/Library/Frameworks/Mono.framework/Phiên bản/Hiện tại/bin' – Cheeso

+0

@Cheeso - chắc chắn, điều đó sẽ hoạt động tốt. Vấn đề ưu tiên, tôi nghĩ vậy. – Yawar

3

Bạn có một thiết lập hỗn hợp.

Gtk trong/opt/local/var/macports không đến từ trình cài đặt của Mono dành cho OSX, có thể bạn đã nhận được nó sớm hơn từ macports. Trình cài đặt Mono đặt các tệp của nó trong /Library/Frameworks/Mono.framework/

Có thể, bạn có thứ gì khác trên đường dẫn của mình, vì nó hoạt động ra khỏi hộp sau khi tôi cài đặt Mono.Framework từ trang web Mono (với ví dụ dòng lệnh mà bạn có ở trên).

+0

Cảm ơn Miguel, tôi sẽ báo cáo lại nếu tôi giải quyết vấn đề này hoặc có các câu hỏi khác. (+1 para vos, por supuesto) –

+0

Xin lỗi, bạn có nghĩa là "đường dẫn" như trong echo $ PATH hoặc ... những gì môi trường vars tôi nên xem xét? –

+0

Miguel, tôi đã chỉnh sửa lại câu hỏi sau bình luận của bạn, nếu bạn có cơ hội để xem nó. –

2

Sử dụng MonoDevelop có thể làm cho mọi việc dễ dàng hơn, nhưng đây là cách mà nó tham chiếu gtk # khi biên dịch (lưu ý rằng nó tham chiếu lắp ráp trực tiếp từ GAC):

gmcs Test.cs -r:/Library/Frameworks/Mono.framework/Phiên bản/Hiện tại/lib/mono/gac/gtk-sharp/2.12.0.0__35e10195dab3c99f/gtk-sharp.dll

Bạn cũng thường cần bao gồm các tham chiếu đến gdk-sharp và pango-sharp và glib-sharp, btw.

Lưu ý trong đường dẫn rằng phiên bản khung là "Hiện tại", điều này làm cho lệnh này trở nên minh bạch hơn một chút.

+0

Cảm ơn vì điều đó, Sandy và chúc may mắn ở đây trên SO. Tôi sẽ kiểm tra điều đó trong thời gian ngắn, mặc dù nó có vẻ như chiến lược Mono yêu thích của tôi - chờ đợi - là một điều tốt khi toàn bộ sự tiến bộ. –