Matlab mex"缺少相关的共享库"

时间:2017-06-01 19:47:45

标签: matlab visual-studio-2017 mex

我在Matlab 2017a中创建了几个mex文件。当我使用Visual Studio C ++ 2017编译它们时,它们在我的计算机上正常运行。但是,当我尝试在另一台计算机上使用它们时,我收到错误消息

Error using mfss_mex.filter_uni
Invalid MEX-file  
'path_to_mex_file\mexfile.mexw64':
Missing dependent shared libraries:
'MSVCP140.dll' required by
'path_to_mex_file\mexfile.mexw64'
'VCRUNTIME140.dll' required by
'path_to_mex_file\mexfile.mexw64'

我想我可以通过在将要运行的每台计算机上安装Visual Studio运行时来解决这个问题,但我想避免这种情况。有没有办法编译这些mex文件并避免与Visual Studio C ++编译器的这些依赖关系?

2 个答案:

答案 0 :(得分:1)

Mathworks solution就是在任何有此问题的计算机上安装C ++编译器运行时。

我发现我只需要将有问题的.dll个文件(MSVCP140.dllVCRUNTIME140.dll)复制到我的.mexw64文件的同一个文件夹中,所有内容都没有问题。

答案 1 :(得分:0)

我有同样的问题。我通过class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.i("MainActivity", "***onCreate ${BuildConfig.APPLICATION_ID}") bindService( Intent() .putExtra("applicationId", BuildConfig.APPLICATION_ID) .putExtra("applicationToken", UUID.randomUUID().toString()) .setComponent( ComponentName( "com.ec.zebra.service", "com.ec.zebra.service.MyService" ) ), mServiceConnection, Context.BIND_AUTO_CREATE or Context.BIND_IMPORTANT) } private val mServiceConnection = object : ServiceConnection { override fun onServiceConnected(cName: ComponentName, service: IBinder) { Log.i("***", "onServiceConnected") } override fun onServiceDisconnected(cName: ComponentName) { Log.i("***", "onServiceDisconnected") } } } 在MATLAB中原始.c文件解决了这个问题; 如果您有原始的.c文件,则简单的方法是:

re-mex

(此处的NAME代表无效的.mexw64文件的名称) 在这种情况下,例如:

mex -setup
mex NAME.c