matlab程序调用未出现问题,请教:64位Intel fortran 调用64位Matlab出问题

非常感谢您!把编码改成UTF-8之后(找不到ANSI),就没有这个问题了。但用matlab官网提供的例子测试时,依然有错,请您指教。

output信息如下:

1>------ Build started: Project: Console2, Configuration: Debug x64 ------

1>Compiling with Intel(R) Visual Fortran Compiler 17.0.7.272 [Intel(R) 64]...

1>Source1.for

1>Linking...

1>Source1.obj : error LNK2019: unresolved external symbol MEXCALLMATLAB referenced in function MEXFUNCTION

1>libifcoremdd.lib(for_main.obj) : error LNK2019: unresolved external symbol MAIN__ referenced in function main

1>x64\Debug\Console2.exe : fatal error LNK1120: 2 unresolved externals

1>

1>Build log written to  "file://C:\Users\Rui\FORTRAN\Console2\Console2\x64\Debug\BuildLog.htm"

1>Console2 - 3 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

***********************************************************************************************************

所采用程序为matlab官网提供的测试程序passstr.f,用于把字符串从fortran传递到matlab:

#include "fintrf.h"

C=====================================================================

#if 0

C

C     passstr.F

C     .F file needs to be preprocessed to generate .for equivalent

C

#endif

C

C     passstr.F is an example for illustrating passing a character

C     matrix from FORTRAN to MATLAB.

C

C     It passes a string array/character matrix into MATLAB as output

C     arguments rather than placing it directly into the workspace.

C

C     Copyright 1984-2009 The MathWorks, Inc.

C

C=====================================================================

C     Gateway routine

subroutine mexFunction(nlhs, plhs, nrhs, prhs)

C     Declarations

implicit none

C     mexFunction arguments:

mwPointer plhs(*), prhs(*)

integer nlhs, nrhs

C     Function declarations:

mwPointer mxCreateString

integer mexCallMATLAB

C     Pointers to input/output mxArrays:

mwPointer input(1)

integer status

mwSize i, m, n

character*75 thestring

character*15 string(5)

C-----------------------------------------------------------------------

C     Create the string to be passed into MATLAB.

string(1) = 'MATLAB         '

string(2) = 'The Scientific '

string(3) = 'Computing      '

string(4) = 'Environment    '

string(5) = '   by TMW, Inc.'

C     Concatenate the set of 5 strings into a long string.

thestring = string(1)

do 10 i=2,5

thestring = thestring(:((i-1)*15)) // string(i)

10   continue

C     Create the string matrix to be passed into MATLAB.

input(1) = mxCreateString(thestring)

C     Set the matrix size to be M=15 and N=5.

m = 15

call mxSetM(input(1), m)

n = 5

call mxSetN(input(1), n)

C     Transpose the resulting matrix in MATLAB because

C     Fortran stores arrays as column major.

status = mexCallMATLAB(1, plhs, 1, input, 'transpose')

C     Cleanup the un-freed memory after calling mexCallMATLAB.

call mxDestroyArray(input(1))

return

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值