有关platform builder 5.0编写流接口驱动程序,高手指点!!!

bej14599   2010-4-29 21:53 楼主
提示: 作者被禁止或删除 内容自动屏蔽

回复评论 (18)

如果不把virtualcopy删除掉就会出现以下报错:
BUILD: [01:0000000020:ERRORE] d:\WinCE_study\pb_driver\gpiodriver\gpiodriver.cpp(24) : error C3861: 'VirtualCopy': identifier not found, even with argument-dependent lookupBUILD: [01:0000000021:PROGC ] Linking obj\ARMV4I\retail\gpiodriver.lib
BUILD: [01:0000000030:ERRORE] LINK : fatal error LNK1181: cannot open input file 'obj\ARMV4I\retail\gpiodriver.obj'
点赞  2010-4-29 21:55
GPIO.dll没有生成
点赞  2010-4-29 22:34
帮顶,还不如手动来做呢~
点赞  2010-4-30 11:52
可为什么找不到virtualcopy函数呢?
引用: 引用 2 楼 veabol 的回复:
GPIO.dll没有生成
点赞  2010-4-30 12:15
这样效率是不是要高一点儿呢?我说的是熟练了以后……
引用: 引用 3 楼 kacyquan 的回复:
帮顶,还不如手动来做呢~
点赞  2010-4-30 12:42
楼主请参考:
http://blog.eeworld.net/JNU_kinke/archive/2009/11/05/4772518.aspx
点赞  2010-4-30 13:14
没觉得这样很高啊~~手动我觉得挺快的~
点赞  2010-4-30 13:33
请问阁下用PB做过驱动吗?还是一直手工一个文件一个文件的建立呢?由其是那个source文件,感觉好复杂啊。。。
引用: 引用 7 楼 kacyquan 的回复:
没觉得这样很高啊~~手动我觉得挺快的~
点赞  2010-4-30 18:30
引用: 引用 6 楼 jnu_kinke 的回复:
楼主请参考:
http://blog.eeworld.net/JNU_kinke/archive/2009/11/05/4772518.aspx
这个我懂啊,关键是我想知道利用PB怎么建立驱动。
点赞  2010-4-30 18:32
没高手用过PB的这个功能吗?难道用PB建立流驱动是一个鸡肋?没有用它编流驱动吗?

大家都是用手动一个文件一个文件的建立吗?

小弟在此等待大家解答呀!!!
点赞  2010-4-30 21:46
PB编译流驱动很好用啊,
从你的错误信息来看应该是GPIO.DLL没有找到。首先在增加驱动之前确保你的整个工程能够顺利通过,然后再增加你的驱动,然后每次只BULID你的新增的驱动文件夹。然后再来慢慢排错。
1、SOURCES文件的结构:

首先我们来看一个SOURCES文件,如下所示,SOURCES主要包括了一些用户的宏定义,这些宏会被MAKEFILE和NMAKE使用,来编译项目的源代码。

!if "$(BSP_NOHSMMC_CH0)"=="1" ##如果SMDK6410.BAT中SET BSP_NOHSMMC_CH0=1那么这个项目将不被编译。
SKIPBUILD=1
!endif

SYNCHRONIZE_DRAIN=1
RELEASETYPE=PLATFORM##生成文件存放的位置

TARGETDEFNAME=s3c6410_hsmmc
DEFFILE=$(TARGETDEFNAME).def##指定DLL文件导出接口函数

TARGETNAME=s3c6410_hsmmc0 ##DLL文件名称
TARGETTYPE=DYNLINK ##表示生成DLL文件

DLLENTRY=DllEntry ##DLL入口地址

##以下是源文件里用的到宏的定义

CDEFINES=$(CDEFINES) # -D_SMDK6410_CH0_EXTCD_ # -D_SMDK6410_CH0_WP_

##以下是头文件的路径列表

INCLUDES=$(INCLUDES);..\s3c6410_hsmmc_lib

##以下是要动态链接的库文件

TARGETLIBS= \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib    \
    $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib    \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\DriverLib.lib

##以下是要静态链接到目标文件中的库文件列表

SOURCELIBS=    \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\sdcardlib.lib    \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\sdbus2.lib    \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\s3c6410_hsmmc0_lib.lib

SOURCES=s3c6410_hsmmc.cpp##要编译的源文件。



本文来自eeworld博客,转载请标明出处:http://blog.eeworld.net/macrozhang001/archive/2010/05/01/5547846.aspx
点赞  2010-5-2 21:34
个人感觉手工与PB编驱动的关系就好像拼音打字与五笔打字的关系一样。。。
引用: 引用 7 楼 kacyquan 的回复:
没觉得这样很高啊~~手动我觉得挺快的~
点赞  2010-5-2 23:02
可以参考别人的流驱动的做法。
源码中需要包含需要的头文件
source文件中的 INCLUDE  TARGETLIBS等中也需写入头文件,库文件的路径

最后,如果不知道某个函数该对应哪个头文件,可以求助于vs2005活pb里面的帮助文档,它会告诉你API函数所需要的头文件。
点赞  2010-5-3 16:56
引用: 引用 13 楼 paul85 的回复:
可以参考别人的流驱动的做法。
源码中需要包含需要的头文件
source文件中的 INCLUDE TARGETLIBS等中也需写入头文件,库文件的路径

最后,如果不知道某个函数该对应哪个头文件,可以求助于vs2005活pb里面的帮助文档,它会告诉你API函数所需要的头文件。


谢谢回复,source文件我用的是建立project时自动生成的文件,难道不行么?是不是要手动自已改一下?
听说DLL工程要放到与平台同一个目录下,我放到以下目录了:
E:\WINCE500\PBWorkspaces\study_catalog\gpiodriver
其中study_catalog是我的平台名字。。。
点赞  2010-5-5 13:49
#11楼:

怎么会生成GPIO.dll呢?
我的驱动名字叫gpiodriver.dll啊。。。
点赞  2010-5-5 13:51
error C3861: 'VirtualCopy': identifier not found, even with argument-dependent lookup

其它的错误还好吧,关键的是上面的错误是怎么回事啊?怎么会找不到VirtualCopy呢?VirtualAlloc能用啊。。。

这里可能是哪里出错了呢?高手们指点一下,谢谢。。。
点赞  2010-5-5 13:54
source 没觉得很复杂~,楼主好好看看source的每一项,其实很简单。
点赞  2010-5-5 15:26
谢谢楼上各位,现在不出现这个问题了,可能原因如下:
1)平台未编译通过,因为当时config.bib文件设置有点不对,我的.nb0已经有31MB,而设置中仅为30MB;
2)在之前我建了很多个DLL工程文件,其中有一个叫GPIO,可能这里有问题吧,编译时弄混了。
现在出现了新问题,我另开一帖,本帖结帖啦,谢谢大家!
点赞  2010-5-5 16:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复