pitlane929 2014-12-01 16:13 采纳率: 100%
浏览 1633
已采纳

源代码的几个dll库出现循环调用时该如何编译?

是这样,我在网上下了一份c的源代码,比较老了,09年写的,是windows平台下的。
代码里作者自己写了几个dll库,也提供了相应的cpp文件,但是都没编译好。
之前在网上查说用到dll库时如果不用loadlibrary函数的话就要相应的Lib文件,作者也是这么干的。但是这几个库出现了循环调用的情况。
只是库循环调用,不是函数循环调用。比如B库调用了A库的a函数,而A库又调用了B库的b函数,而a、b函数之间没有任何关系。这样一来我无论是A库还是B库的Lib文件都得不到了。。。
于是我想问这种情况下源代码该如何编译?
顺带提下,编译器用的vs2010

其实源代码里也附带了几个dll库的Lib文件,但是可能由于编译器的问题,几个参数类型有TCHAR的函数编译器始终认不出来,报的错是这样的:
无法解析的外部符号 "__declspec(dllimport) int cdecl package_search_file(char const *)" (imp_?package_search_file@@YAHPBD@Z),该符号在函数 _main 中被引用
认不出package_search_directory这个函数,这个函数我在相应cpp文件里找到了,定义是这样的
PACKAGE_CORE_API int package_search_file(const TCHAR *path)
我打开了Lib文件看了下,vs2010正常编译出来TCHAR *参数类型的符号是这样的
fio_operation_length_of@@YAHPAD
而源代码中的参数类型的符号是这样的
package_search_file@@YAHPBG
注意@@后面的内容
不要跟我说把G改成D,编译器会报LIB文件损坏……
网上说的用LIB.exe生成Lib文件的办法试过了,编译器不认……
能解决这个问题应该也能解决我现在的困境。

求各位大神指教了

  • 写回答

1条回答 默认 最新

  • WitcherLu 2014-12-11 01:07
    关注

    为了解决无法解析的外部符号问题,你可以试一下把自己C++的工程字符集改成Unicode的再重新编译。在项目上右键-属性-常规-字符集-使用Unicode字符集。因为TCHAR是个宏,在ANSI项目中类型是char,如果LIB库编译的是Unicode版,应该会链接的时候找不到函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn