3428|8

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE6.0动态加载驱动问题 [复制链接]

出现如下错误
BUILD: [00:0000000026:PROGC ] Building LIB Pass in D:\WINCE600\PLATFORM\LPC32XX\src\drivers\GPIO\ directory.
BUILD: [01:0000000036:PROGC ] Linking D:\WINCE600\platform\LPC32XX\lib\ARMV4I\debug\GPIO.lib
BUILD: [01:0000000045:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Close
BUILD: [01:0000000046:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Deinit
BUILD: [01:0000000047:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_IOControl
BUILD: [01:0000000048:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Init
BUILD: [01:0000000049:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Open
BUILD: [01:0000000050:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_PowerDown
BUILD: [01:0000000051:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_PowerUp
BUILD: [01:0000000052:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Read
BUILD: [01:0000000053:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Seek
BUILD: [01:0000000054:ERRORE] GPIO.def : error LNK2001: unresolved external symbol GPI_Write
BUILD: [01:0000000055:ERRORE] D:\WINCE600\platform\LPC32XX\lib\ARMV4I\debug\GPIO.lib : fatal error LNK1120: 10 unresolved externals


以下是我的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
说明WINCE6.0,我在DRIVER下建立的是一个动态WCE Dymanic-Link Library 驱动文件,然后单独编译,而D:\WINCE600\platform\LPC32XX\lib\ARMV4I\debug\GPIO.lib下没有 GPIO.lib这个文件,是不是还要设置那呢?

最新回复

没有必要开这么多帖子吧~ 我已经在其他帖子里回了。  详情 回复 发表于 2008-10-25 16:45
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没人帮我吗。。。
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
从错误看,好像是没有相关函数的实现。
建议贴出sources文件和驱动代码,以便分析。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 sunrain_hjb 的回复:
从错误看,好像是没有相关函数的实现。
建议贴出sources文件和驱动代码,以便分析。

/*******************************************************************************************
函数名称: GPI_IOControl
描    述: 驱动程序 I/O 请求
输入参数: DWORD dwIoControlCode:  见本文件的头文件
输出参数:
返    回: TRUE: 操作成功    FALSE: 操作失败
*******************************************************************************************/
static BOOL GPI_IOControl(
    DWORD Handle,
    DWORD dwIoControlCode,
    PBYTE pInBuf,
    DWORD nInBufSize,
    PBYTE pOutBuf,
    DWORD nOutBufSize,
    PDWORD pBytesReturned
    )
{
        BOOL bErr = FALSE;       
        switch(dwIoControlCode & IOCTL_GPIO_FUN_MASK)
        {       
                /*
                *   设置引脚为输出
                */
                case IOCTL_GPIO_SET_PIN_OUT:
                        if (nInBufSize > 0)
                                bErr = GPIO_SetPinOut(dwIoControlCode, *pInBuf);       
                break;                       
                /*
                *   设置引脚为输入
                */
                case IOCTL_GPIO_SET_PIN_IN:
                        if (nInBufSize > 0)
                                bErr = GPIO_SetPinIn(dwIoControlCode, *pInBuf);
                break;

                /*
                *   设置引脚输出高电平
                */
                case IOCTL_GPIO_SET_PIN:
                        if (nInBufSize > 0)
                                bErr = GPIO_SetPin(dwIoControlCode, *pInBuf);
                break;

                /*
                *   设置引脚输出低电平
                */
                case IOCTL_GPIO_CLR_PIN:
                        if (nInBufSize > 0)
                                bErr = GPIO_ClrPin(dwIoControlCode, *pInBuf);
                break;

                /*
                *   读取引脚电平状态
                */
                case IOCTL_GPIO_INP_STATE:
                        if ((nOutBufSize > 0) && (nInBufSize > 0))
                        {
                                bErr = GPIO_ReadPin(dwIoControlCode, *pInBuf, pOutBuf);
                                *pBytesReturned = 1;
                        }
                break;
                /*
                *   读取引脚方向状态
                */
                case IOCTL_GPIO_DIR_STATE:
                        if ((nOutBufSize > 0) && (nInBufSize > 0))
                        {
                                bErr = GPIO_ReadDir(dwIoControlCode, *pInBuf, pOutBuf);
                                *pBytesReturned = 1;
                        }
                break;
                /*
                *   复用引脚设置
                */
                case IOCTL_GPIO_MUX_SET:
                        if ((nOutBufSize > 0) && (nInBufSize > 0))
                        {
                                bErr = GPIO_MUX_SET(dwIoControlCode, *pInBuf);
                                *pBytesReturned = 1;
                        }
                break;

                case IOCTL_GPIO_MUX_CLR:
                        if ((nOutBufSize > 0) && (nInBufSize > 0))
                        {
                                bErr = GPIO_MUX_CLR(dwIoControlCode, *pInBuf);
                                *pBytesReturned = 1;
                        }
                break;
                case IOCTL_GPIO_MUX_STATE:
                        if ((nOutBufSize > 0) && (nInBufSize > 0))
                        {
                                bErr = GPIO_MUX_STATE(dwIoControlCode, *pInBuf, pOutBuf);
                                *pBytesReturned = 1;
                        }
                break;               
                default:
                break;
        }

    return bErr;
}
static DWORD GPI_Open(DWORD Handle, DWORD dwAccess, DWORD dwShareMode) {
    if (g_OpenCount > 0)
                        return 0;
    RETAILMSG(1, (TEXT("GPIO OPENED!BUT NOTHING\r\n")));
    g_OpenCount++;
    return (g_OpenCount);
   }
static BOOL  GPI_Close(DWORD Handle) {
          RETAILMSG(1, (TEXT("GPIO CLOSED!BUT NOTHING\r\n")));
          g_OpenCount = 0;
                return (1);
         }

static BOOL  GPI_Deinit(DWORD dwData)
{
                if(g_pGPIORegs)
                        g_pGPIORegs = NULL;
                RETAILMSG(1, (TEXT("GPIO Deinitted!\r\n")));
                g_OpenCount = 0;
                return 1;
                }

static DWORD GPI_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes)
{
        RETAILMSG(1, (TEXT("GPIO READ!BUT NOTHING\r\n")));
        return 1;
}

static DWORD GPI_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwNumBytes)
{
        RETAILMSG(1, (TEXT("GPIO WRITE!BUT NOTHING\r\n")));
        return 1;
}

static DWORD GPI_Seek(DWORD Handle, long lDistance, DWORD dwMoveMethod)
{
        return 1;
}

static void GPI_PowerUp(void)
{
        //return 1;
}
static void GPI_PowerDown(void)
{
        //return 1;
}
大家帮忙看看有什么问题
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

5
 
以下是我的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 \
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
MSDN上的解释为:Error LNK1120 gives you a count (number) of unresolved externals for this link. The conditions that cause unresolved externals are described with error LNK2001, which precedes this error message (once for each unresolved external).
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
今天是周末,周一上班再分析一下。哈哈
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 gooogleman 的回复:
今天是周末,周一上班再分析一下。哈哈

谢谢拉。。。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
没有必要开这么多帖子吧~
我已经在其他帖子里回了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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