我正在尝试导入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()
。