C ++附加导致无法解析的外部符号的随机序数

时间:2012-05-15 04:37:00

标签: c++ visual-studio-2010 dll unresolved-external ordinal

我无法弄清楚 Visual C ++ 2010 正在做什么,我已经用Google搜索了几个小时,我仍然不知道发生了什么。我真的非常感谢我能得到的任何帮助。

我有一个我导入函数的DLL,我已经完成了所有常用的动作。我已经从 DLL 创建了 .lib文件,并且我创建了一个包含extern "C"__stdcall的头文件。

然而,我把所有的努力都放在了编译器 STILL 的抱怨中:

unresolved external symbol _Connected@4 referenced in function _main

这是真正的踢球者,你看到那里的序数了吗? @4< - 我没有在我的代码中指定任何地方,VC ++刚刚决定它显然喜欢数字4。在DLL中,函数Connected实际上被列为序数11,而不是4。

如果我在.lib文件中将函数更改为序号4,则项目编译,但DLL会因为已将Connected列为11而抱怨。

NtDirect.dll的BinDump:

File Type: DLL

Section contains the following exports for NtDirect.dll

00000000 characteristics
4F58E306 time date stamp Thu Mar 08 09:49:10 2012
    0.00 version
       1 ordinal base
      32 number of functions
      32 number of names

ordinal hint RVA      name

      1    0 000011F0 Ask
     ...
     10    9 000016A0 ConfirmOrders
     11    A 000016E0 Connected
     12    B 00001750 Filled
     ...
     32   1F 00002070 UnsubscribeMarketData

Summary

   13000 .data
    3000 .rdata
    2000 .reloc
    1000 .rsrc
    F000 .text

main.cpp的代码:

#include <iostream>
#include "ninja.h"

int main()
{
    std::cout << Connected(1);
    std::cin.get();

    return 0;
}

ninja.h 中的声明:(仅显示连接以节省空间)

extern "C" __declspec(dllexport) int __stdcall Connected(int showMessage);

NtDirect.def 中导出:(我在没有指定序数的情况下尝试使用AND。)

LIBRARY NtDirect

EXPORTS
...
ConfirmOrders@10
Connected@11
Filled@12
...

已经尝试过:

从包含Connected@11Connected的.def文件构建.lib。我也尝试过使用除连接之外的其他功能,它们也不起作用。我尝试过使用我的导入声明(添加和删除extern "C")。

我还确保DLL与我的可执行文件位于同一个文件夹中,并且我已将NtDirect.dll添加到链接器以便可以访问它。

我正在运行Windows 7 64位。

0 个答案:

没有答案