主题:EM9000协处理器的使用问题 共有33295人关注过本帖 |
---|
EM9000用户 |
1楼 |
EM9000协处理器的使用问题 Post By:2011-10-2 20:10:00 [只看该作者]
我按照《EM9000协处理器浮点运算函数.pdf》文档中的使用方法先在项目链接器中添加了em9000_crunch.lib的依赖项,然后在程序中调用crunch.h中提供的函数,可是编译老通不过。之后我又在Win32智能设备控制台应用程序中编写简单的测试程序验证,确实是无法编译通过。这是怎么回事?请解释。
编写的测试程序如下: #include "crunch.h" #include  using namespace std; int _tmain(int argc,_TCHAR* argv[]) { float a,b,c; a=5.123; b=3.156; c=em_add(a,b); cout< cout< cout< return 0; } 编辑结果: 正在编译... em_test.cpp 正在链接... em_test.obj : error LNK2019: 无法解析的外部符号 "float __cdecl em_mult(float,float)" (?em_mult@@YAMMM@Z),该符号在函数 wmain 中被引用 em_test.obj : error LNK2019: 无法解析的外部符号 "float __cdecl em_sub(float,float)" (?em_sub@@YAMMM@Z),该符号在函数 wmain 中被引用 em_test.obj : error LNK2019: 无法解析的外部符号 "float __cdecl em_add(float,float)" (?em_add@@YAMMM@Z),该符号在函数 wmain 中被引用 EM9000 (ARMV4I)\Debug/em_test.exe : fatal error LNK1120: 3 个无法解析的外部命令 另外,看crunch.h提供的浮点函数太少,只有简单的加、减、乘运算,没有除法,pdf文档中提到的如FIR滤波之类的功能没有看到,我需要用EM9000做一些信号处理的算法,FFT、FIR滤波等是经常要用到的,如果贵公司已经开发出一些功能,希望将算法库发至我的邮箱,谢谢。 |
|
单帖管理 | 引用 | 回复 |
EM9000用户 |
2楼 |
Post By:2011-10-2 22:14:00 [只看该作者]
程序发上去乱了。
再发一遍 #include "crunch.h" #include  using namespace std; int _tmain(int argc,_TCHAR* argv[]) { float a,b,c; a=5.123; b=3.156; c=em_add(a,b); cout< cout< cout< return 0; } |
|
单帖管理 | 引用 | 回复 |
EM9000用户 |
3楼 |
Post By:2011-10-2 22:14:00 [只看该作者]
还是乱
|
|
单帖管理 | 引用 | 回复 |
zxw |
4楼 |
Post By:2011-10-8 9:25:00 [只看该作者]
你注意一下你的ARM平台是否选择正确。另外从提示信息来看,你可能没有加库文件到你的工程中。你找找相关的设置。
|
|
单帖管理 | 引用 | 回复 |
EM9000用户 |
5楼 |
Post By:2011-10-8 10:27:00 [只看该作者]
平台选的是EM9000(ARMV4I),前面就说了已经添加了光盘提供的em9000_crunch.lib,不知道还有那些库要添加?
|
|
单帖管理 | 引用 | 回复 |
zxw |
6楼 |
Post By:2011-10-8 14:24:00 [只看该作者]
你用另外一个例程试试:光盘下的crunchdemo。
对于你所需要的那些算法,我们没有相关的代码,真对不起。 |
|
单帖管理 | 引用 | 回复 |
EM9000用户 |
7楼 |
Post By:2011-10-8 16:40:00 [只看该作者]
同样是下面这样一段主程序,当文件后缀是c时,可以编译通过,当后缀是cpp时,就会出现上面的错误。光盘给出的demo也都是c文件,是不是只能在c中才可以使用协处理器啊?可是我编程都是在MFC中,难道就用不了协处理器了?
#include  #include  #include "crunch.h" int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { float a,b,c; a=5.123; b=3.156; c=em_add(a,b); printf("%f\n",c); c=em_sub(a,b); printf("%f\n",c); c=em_mult(a,b); printf("%f\n",c); while(1); return 0; } |
|
单帖管理 | 引用 | 回复 |
EM9000用户 |
8楼 |
Post By:2011-10-8 16:43:00 [只看该作者]
上面这段程序前两个没显示出来的头文件是stdio.h和windows.h
|
|
单帖管理 | 引用 | 回复 |
x10 |
9楼 |
Post By:2011-10-9 8:50:00 [只看该作者]
现在我们已经提供了包括浮点计算和超越函数计算的浮点库,所以不再用em_xxx()这些函数了,对浮点计算,直接写算术表达式即可。光盘上的crunchdemo就是这样的一个例子。
|
|
单帖管理 | 引用 | 回复 |