使用 Windows 7、Matlab R2011a(32 位)和 Open Watcom 版本 1.8,我正在尝试编译调用 Fortran 代码的 C MEX 文件。
按照 Matlab 网站(支持链接)上发布的说明,我首先使用以下命令编译了 Fortran 目标文件:
wfl386 -c -fpi87 -SC getqpf.f
然后我尝试将目标文件链接到许多 C 文件。所有 C 文件都能正确编译,但我收到以下链接错误。未定义的引用用于 C 文件中从getqpf.f
. 例如,QESTM
在其中一个 C 文件中定义为函数,如int qestm_()
.
该q_estimate.c
文件包含 MEX 程序的入口点函数。这个想法是让入口点函数调用getqpf.f
. 中的子例程getqpf.f
调用其他文件中的 C 代码函数。
我怎样才能摆脱未定义的引用?
>> mex q_estimate.c paul2.c paul2_L1.c paul6.c paul6_L1.c runavg.c fit_slope.c getqpf.obj
Open Watcom Linker Version 1.8
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
Error! E2028: QESTM is an undefined reference
Error! E2028: QESTM1 is an undefined reference
Error! E2028: QESTF is an undefined reference
Error! E2028: QESTF1 is an undefined reference
creating a Windows NT dynamic link library
file getqpf.obj(E:\DEVELOPMENT-FINAL\EXPERIMENTS\test-Q-analysis\getqpf.f): undefined symbol QESTM
file getqpf.obj(E:\DEVELOPMENT-FINAL\EXPERIMENTS\test-Q-analysis\getqpf.f): undefined symbol QESTM1
file getqpf.obj(E:\DEVELOPMENT-FINAL\EXPERIMENTS\test-Q-analysis\getqpf.f): undefined symbol QESTF
file getqpf.obj(E:\DEVELOPMENT-FINAL\EXPERIMENTS\test-Q-analysis\getqpf.f): undefined symbol QESTF1
C:\PROGRA~2\MATLAB\R2011A~1\BIN\MEX.PL: Error: Link of 'q_estimate.mexw32' failed.