0

我有以下问题:我有一个 64 位版本的 matlab 2011b。我需要从 DLL 调用一些函数。一段时间前,这一直在使用 Visual Studio 2010 的 prof 版本。

现在我想让它与 express 版本一起运行。因此,我安装了 Visual Studio C++ 2010 Express 和 Win SDK 7.1。现在我给 matlab 命令mex -setup并选择 VC++ 编译器。好的!

如果我想用 加载 dll 本身loadlibrary,我会遇到很多错误。类似于:构建 libFramework_thunk_pcwin64 失败。编译器输出为:

cl -I"C:\MATLAB\R2011b\extern\include"   /W3  /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0  /nologo  -I"U:\Framework\Framework\so" -I"U:\Framework\Framework\so" "libFramework_thunk_pcwin64.c" -LD -Fe"libFramework_thunk_pcwin64.dll" libFramework_thunk_pcwin64.c
Bibliothek "libFramework_thunk_pcwin64.lib" und Objekt "libFramework_thunk_pcwin64.exp" werden erstellt.
LIBCMT.lib(dllcrt0.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0" in Funktion "__CRT_INIT@12".
LIBCMT.lib(tidtable.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0".
LIBCMT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0".
LIBCMT.lib(onexit.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DecodePointer@4".
LIBCMT.lib(crtmboxw.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DecodePointer@4" in Funktion "___crtMessageBoxW".

<snip>

libFramework_thunk_pcwin64.dll : fatal error LNK1120: 65 nicht aufgelöste externe Verweise.

Error in load_Framework (line 4)
    loadlibrary 'libFramework' 'Shaddower_C.h'

不幸的是,当我使用德语软件时,这些错误是德语的。(松散的)翻译是,在不同的功能中存在指向不可解决的外部符号的链接。如果您知道如何将语言更改为英语,我可以为您提供确切的输出。

当我用谷歌搜索时,我发现我尝试的所有函数都来自标准库,我只是找到了一些 rundll32.dll 但也许还有其他链接。

事实上,编译器似乎无法访问默认的 windows dll(或 sdk)。

你能告诉我这里出了什么问题吗?

PS:对于那些了解德语的人,请参阅http://www.gomatlab.de/viewtopic,p,91154.html#91154我在纯 matlab 论坛拳头上发帖,但我猜这是一个 VC++ 问题我也在这里发帖.

4

1 回答 1

0

我发现,我安装了一些关于 VS2010 Redistributable 的软件包。我删除了它们以及安装的 VS2010 和 SDK。重新安装 SDK 后一切正常。

谢谢

于 2012-05-18T10:51:31.517 回答