从第三方DLL调用成员函数时的链接问题

时间:2019-02-20 22:16:51

标签: c++ windows dll gameanalytics

我正在尝试导入GameAnalytics项目的共享库。我正在使用其自己的构建系统,并且除了一些警告之外,一切都很好,并且从此构建中获得了.dll,.lib(导入lib)和.exp。

问题在于,显然导入lib和.dll都没有正确导出符号。用dumpbin调用/exports可以看到实际上是成员函数的类C函数原型的符号。因此,当我尝试使用此导入库查找在代码中调用的成员函数时,会得到未解析的符号。

由于我从不从共享库中导入C ++成员函数,所以我的问题是:在导入该库的过程中是否遗漏了一些重要内容?我唯一想到的是,GameAnalytics项目背后的人员没有正确导出类和函数成员。我读了一些文本,看来您必须直接_export类并在成员函数上使用far pointers

编辑,输出为dumpbin /exports GameAnalytics.lib

ordinal hint RVA      name

      1    0 000C6F60 addBusinessEvent
      2    1 000C7180 addBusinessEventJson
      3    2 000C75F0 addDesignEvent
      4    3 000C7690 addDesignEventWithValue
      5    4 000C7740 addErrorEvent
      6    5 000C77E0 addProgressionEvent
      7    6 000C7970 addProgressionEventJson
      8    7 000C7CF0 addProgressionEventWithScore
      9    8 000C7E90 addProgressionEventWithScoreJson
     10    9 000C8220 addResourceEvent
     11    A 000C83C0 addResourceEventJson
     12    B 000C8760 configureAvailableCustomDimensions01
     13    C 000C8940 configureAvailableCustomDimensions02
     14    D 000C8B20 configureAvailableCustomDimensions03
     15    E 000C8D00 configureAvailableResourceCurrencies
     16    F 000C8EE0 configureAvailableResourceItemTypes
     17   10 000C90C0 configureBuild
     18   11 000C9160 configureDeviceManufacturer
     19   12 000C9200 configureDeviceModel
     20   13 000C92A0 configureGameEngineVersion
     21   14 000C9340 configureSdkGameEngineVersion
     22   15 000C93E0 configureUserId
     23   16 000C9480 configureWritablePath
     24   17 000C9520 gameAnalyticsEndSession
     25   18 000C9530 gameAnalyticsStartSession
     26   19 000C9540 getCommandCenterValueAsString
     27   1A 000C9630 getCommandCenterValueAsStringWithDefaultValue
     28   1B 000C97A0 getConfigurationsContentAsString
     29   1C 000C9810 initialize
     30   1D 000C9920 isCommandCenterReady
     31   1E 000C9950 onQuit
     32   1F 000C9960 onResume
     33   20 000C9970 onSuspend
     34   21 000C9980 setBirthYear
     35   22 000C99A0 setCustomDimension01
     36   23 000C9A40 setCustomDimension02
     37   24 000C9AE0 setCustomDimension03
     38   25 000C9B80 setEnabledErrorReporting
     39   26 000C9BB0 setEnabledEventSubmission
     40   27 000C9BE0 setEnabledInfoLog
     41   28 000C9C10 setEnabledManualSessionHandling
     42   29 000C9C40 setEnabledVerboseLog
     43   2A 000C9C70 setFacebookId
     44   2B 000C9D10 setGender

链接器无法解决我的代码中的调用示例:

gameanalytics::GameAnalytics::configureBuild("1.0.0");

此调用没有修饰(据我了解,仅适用于类似C的configureBuild()

0 个答案:

没有答案