banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Lập trình liên kết động  XML
  [Question]   Lập trình liên kết động 21/01/2014 12:27:56 (+0700) | #1 | 279513
MrDoA
Member

[Minus]    0    [Plus]
Joined: 28/03/2010 11:21:55
Messages: 21
Offline
[Profile] [PM]
Chào các anh chị trên HVA,

Em không phải là dân chuyên về lập trình nên có thể câu hỏi không sát nghĩa, mong mọi người bỏ qua.

Vấn đề của em là tạo ra 1 thư viện liên kết động sử dụng ngôn ngữ Fortran và gọi các hàm trong thư viện đó bằng 1 ngôn ngữ khác (ví dụ như C/C++). Lý do em phải làm việc trên vì mục đích sử dụng ngôn ngữ lập trình để giải quyết bài toán khoa học. Vì vậy, rất nhiều hàm, thủ tục của các thuật toán khoa học được viết trên Fortran mà các ngôn ngữ khác có thể không có.

Đi vào vấn đề chính, hiện tại em sử dụng bộ biên dịch GCC để lập trình.

Trong đó, ví dụ 1 subroutine fortran đơn giản, em đặt là testF.f:

Code:
subroutine testF(a)
	  !DEC$ ATTRIBUTES DLLEXPORT :: testF
      a = a*2
      return
      end


Sau đó tiến hành biên dịch:

Code:
g77 -O2 -c testF.f
dllwrap --export-all-symbols testF.o -o testF.dll



Sau đó sử dụng Code C, testC.c:

Code:
#include <stdlib.h>
#include <stdio.h>

__declspec(dllimport) int __cdecl testf_(int a);

int main(int argc, char** argv)
{
	printf("%d\n", testf_(2));
  return EXIT_SUCCESS;
}


Với lệnh:

Code:
gcc -c -o testC.o testC.c
gcc -o test.exe -s testC.o -L. -ltestF


Tuy nhiên không thể chạy được file test.exe vừa build, mọi người giúp em đưa ra ý kiến với ạ.

Em cám ơn,
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|