职位关键字 工作地点
工作名称 公司名称 校园招聘
中国最好的工作搜索引擎!
  回复留言  
  TC中出现Linker Error: Undefined symbol
作者: siare_yu  01-01 08:00   回复  
 #include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <stdlib.h>

#include <graphics.h>

typedef unsigned char BYTE;

typedef unsigned int WORD;

typedef unsigned long DWORD;

/* PCI设备索引。bus/dev/func 共16位,为了方便处理可放在一个WORD中 */

#define PDI_BUS_SHIFT 8

#define PDI_BUS_SIZE 8

#define PDI_BUS_MAX 0xFF

#define PDI_BUS_MASK 0xFF00

#define PDI_DEVICE_SHIFT 3

#define PDI_DEVICE_SIZE 5

#define PDI_DEVICE_MAX 0x1F

#define PDI_DEVICE_MASK 0x00F8

#define PDI_FUNCTION_SHIFT 0

#define PDI_FUNCTION_SIZE 3

#define PDI_FUNCTION_MAX 0x7

#define PDI_FUNCTION_MASK 0x0007

#define MK_PDI(bus,dev,func) (WORD)((bus&PDI_BUS_MAX)<<PDI_BUS_SHIFT | (dev&PDI_DEVICE_MAX)<<PDI_DEVICE_SHIFT | (func&PDI_FUNCTION_MAX) )

/* PCI配置空间寄存器 */

#define PCI_CONFIG_ADDRESS 0xCF8

#define PCI_CONFIG_DATA 0xCFC

/* 填充PCI_CONFIG_ADDRESS */

#define MK_PCICFGADDR(bus,dev,func) (DWORD)(0x80000000L | (DWORD)MK_PDI(bus,dev,func)<<8)

/* 读32位端口 */

DWORD inpd(int portid)

{ DWORD dwRet;

_asm ("mov dx, portid");

_asm ("lea bx, dwRet");

__emit__( 0x66,0x50,

0x66,0xED,

0x66,0x89,0x07,

0x66,0x58);

return dwRet;

}

/* 写32位端口 */

void outpd(int portid, DWORD dwVal)

{ _asm ("mov dx, portid");

_asm ("lea bx, dwVal");

__emit__( 0x66,0x50,

0x66,0x8B,0x07,

0x66,0xEF,

0x66,0x58);

return;

}

int main(void)

{ int bus, dev, func;

int i; DWORD dwAddr;

DWORD dwData;

FILE* hF;

char szFile[0x10];

printf("\n");

printf("Bus#\tDevice#\tFunc#\tVendor\tDevice\tClass\tIRQ\tIntPin\n");

}

}

}

}

}

return 0;}

字数太多省略了程序,能通过Build,

run的时候出现这样的错“Linker Error: Undefined symbol '__asm' in module PCI2.c”,不知道是原因,谢谢。

  回复:TC中出现Linker Error: Undefined symbol
作者: dianzix  01-01 08:00   回复  
 TC 中的嵌入式汇编使用asm,而不是 __asm,

并且不能在TC环境下编译连接,需要用命令行编译器TCC编译。



而且你上面的程序肯定功能不能通过Build, 如果通过的话run就不需要再连接了。你只是通过了主模块的编译,并没有连接, build包括compile和link,Run前将检查是否通过了连接,若没有才会去连接。

标 题:
内 容:
用户名:
 游客
 
 
Copyright©2005-2007, 版权所有 WWW.JOBMET.COM
ICP证:京ICP备06019556号