我在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 ++编译器的这些依赖关系?
答案 0 :(得分:1)
Mathworks solution就是在任何有此问题的计算机上安装C ++编译器运行时。
我发现我只需要将有问题的.dll
个文件(MSVCP140.dll
和VCRUNTIME140.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