回 帖 发 新 帖 刷新版面

主题:warning LNK4229: 遇到无效的指令

在使用def文件导出函数时,出现了下面的错误:
warning LNK4229: 遇到无效的指令“/def:SdPreV32.def”;已忽略

我使用def的代码是:
#pragma comment(linker, "/def:SdPreV32.def")

def文件中的内容是:
LIBRARY "SdPreV32"
EXPORTS
  GetPrinterDC
  GetPageInfo
  SetPageInfo

不知道怎样使用def文件?
当我注释掉#pragma comment(linker, "/def:SdPreV32.def")时,winapi调用约定导出来的函数有修饰符,但是使用def文件又出错。
应该怎样使用def文件呢?

回复列表 (共2个回复)

沙发

def文件里这样定义看:

LIBRARY  SdPreV32 // SdPreV32 为动态连接库的工程名
EXPORTS  
GetPrinterDC  @2
GetPageInfo   @3
SetPageInfo   @4

编译连接后把动态连接库拷贝到引用该库的应用程序的目录下,并在project设置一下link...并在引用该库的地方导出
_declspec(dllimport) ...   //"..."为从动态连接库中导出的函数声明 
比如导出的是GetPrinterDC函数就把“...”改为该函数的完整的声明

板凳

知道怎么回事了:
#pragma comment(linker, "/def:SdPreV32.def")不支持这种设置
需要在属性模块文件中设置

我来回复

您尚未登录,请登录后再回复。点此登录或注册