4798|11

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

建立一个动态WCE Dymanic-Link Library 驱动文件的步骤(急啊,帮忙解决) [复制链接]

我现在的步骤如下:(WINCE6.0)
1、在driver目录下ADD->new sources subproject,然后建立一个WCE Dymanic-Link Library 子工程
2、程序代码有GPIO.app,gpio.h
3、然后定义
GPIO.def
LIBRARY GPIO

EXPORTS GPI_Init
        GPI_Deinit
        GPI_Open
        GPI_Close
        GPI_Read
        GPI_Write
        GPI_Seek
        GPI_IOControl
        GPI_PowerDown
        GPI_PowerUp

source 文件
TARGETNAME= GPIO
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS= \
    $(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib \


DEFFILE=GPIO.def
PREPROCESSDEFFILE=1
DLLENTRY=DllEntry

FILE_VIEW_INCLUDES_FOLDER= \
        gpio.h \       

SOURCES= \
        GPIO.cpp \

makefile文件
!INCLUDE $(_MAKEENVROOT)\makefile.def
4、编译出现如下错误
BUILD: [00:0000000721:PROGC ] Building LIB Pass in D:\WINCE600\PLATFORM\LPC32XX\src\drivers\GPIO\ directory.
BUILD: [01:0000000731:PROGC ] Linking D:\WINCE600\platform\LPC32XX\lib\ARMV4I\debug\GPIO.lib
BUILD: [01:0000000740:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Close
BUILD: [01:0000000741:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Deinit
BUILD: [01:0000000742:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_IOControl
BUILD: [01:0000000743:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Init
BUILD: [01:0000000744:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Open
BUILD: [01:0000000745:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_PowerDown
BUILD: [01:0000000746:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_PowerUp
BUILD: [01:0000000747:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Read
BUILD: [01:0000000748:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Seek
BUILD: [01:0000000749:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Write
BUILD: [01:0000000750:ERRORE] D:\WINCE600\platform\LPC32XX\lib\ARMV4I\debug\GPIO.lib : fatal error LNK1120: 10 unresolved externals
大家帮我看看我少了那个步骤呢?
谢谢拉,好几天了,很急啊

最新回复

加到Sources时面进去 TARGETLIBS= \     $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib   \  详情 回复 发表于 2008-10-25 22:42
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
把函数之前的static去掉试试看。
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
还有,是不是要修改platform.reg,platform.bib?
另外编译时,我就选中GPIO文件右键rebuild,不知道操作是否正确
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
如果你是用VS2005添加的subproject,
bib基本上不用自己修改,不过你最好确认一下。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 sunrain_hjb 的回复:
如果你是用VS2005添加的subproject,
bib基本上不用自己修改,不过你最好确认一下。

就是说我建立的动态DLL工程是不需要修改.bib和.reg,象我就建立了一个单独的gpio.reg
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 sunrain_hjb 的回复:
把函数之前的static去掉试试看。

去掉这个后,已经没有上边的错误了,在这里先谢谢你了
现在有下边的错误
BUILD: [01:0000000079:ERRORE] GPIO.obj : error LNK2019: unresolved external symbol MmMapIoSpace referenced in function "unsigned long __cdecl GPI_Init(unsigned long)" (?GPI_Init@@YAKK@Z)
BUILD: [01:0000000080:ERRORE] D:\WINCE600\platform\LPC32XX\target\ARMV4I\debug\GPIO.dll : fatal error LNK1120: 1 unresolved externals

DWORD GPI_Init(DWORD dwContext)
{
                PHYSICAL_ADDRESS RegPA;
                if(g_pGPIORegs == NULL)
                {
                                RegPA.QuadPart = GPIO_BASE;
                                g_pGPIORegs = (volatile GPIO_REGS_T *) MmMapIoSpace(RegPA,0x400, false);
                    RETAILMSG(1, (TEXT("GPIO inited!\r\n")));
                }
                g_OpenCount = 0;
                return 1;
}
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
定义:static volatile GPIO_REGS_T  *g_pGPIORegs  = NULL;
MSDN上
PVOID MmMapIoSpace(
  PHYSICAL_ADDRESS PhysicalAddress,
  ULONG NumberOfBytes,
  BOOLEAN CacheEnable
);

Parameters
PhysicalAddress
[in] Starting physical address of the I/O range to map.

NumberOfBytes
[in] Number of bytes to map.

CacheEnable
[in] Flag to indicate whether the physical address range can map as cached memory. For device registers, this value is usually FALSE.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
添加CEDDK.lib.
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 1 楼 sunrain_hjb 的回复:
把函数之前的static去掉试试看。

为何去掉Static就可以了?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 sunrain_hjb 的回复:
添加CEDDK.lib.

这个在那加的?CEDDK.h已经加了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 8 楼 gsymichael 的回复:
引用 1 楼 sunrain_hjb 的回复:
把函数之前的static去掉试试看。

为何去掉Static就可以了?

static代表只有当前文件起作用,我的解释估计不太正确,但是有这个意思
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 9 楼 andylao62 的回复:
引用 7 楼 sunrain_hjb 的回复:
添加CEDDK.lib.

这个在那加的?CEDDK.h已经加了


加到Sources时面进去
TARGETLIBS= \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib   \
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表