使用vs2005 team edition编译MySQL storage/heap文件夹下的源程序,给出“无法解析的外部符号”的出错提示。希望碰到过的朋友给出解决的建议

huanglei0476 2009-05-25 10:21:03
因为工作需要使用vs2005 team edition来编译MySQL Cluster7。0 中storage/heap文件夹下的源程序,编译器给出“无法解析的外部符号”的出错提示。
经检查,出错提示所给出的函数所在文件没有包括在搜索目录中,在命令行中加入相关目录后,错误依旧。考虑可能是其他原因。

经网上搜索,找到的解决方案有如下两个:
1。 1)将 “项目-属性-C/C++ -代码生成-缓冲区安全检查”设置为:“否”
2)在 “项目-属性-链接器-输入-附加依赖项”中增加“bufferoverflowu.lib”

2。将 “项目-连接-系统-子系统”改为:“Windows”

两种方案都做了以后问题依然。

在编译这个MySQL单独的heap文件夹之前,对MySQL Cluster7。0 按照文档的说明进行了整体的编译,这个时候编译heap文件夹没有出现上述问题,甚至没有出错的提示。
目前个人考虑有可能是漏掉了一些该包含的文件,所以有这个提示。现在正在看各个文件夹中的makefile.in和makefile.am文件,试图通过解度makefile文件来找到问题的所在。不过本人对makefile ,mysql ,平台间makefile文件生成工具cmake 都不是很熟悉,目前的进展很慢,所以来论坛上看看是不是有其他的朋友碰到过这个问题,大家讨论讨论;或者希望哪位高手对我现在的工作思路提提意见。不胜感激!!
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanglei0476 2009-05-25
  • 打赏
  • 举报
回复
一些说明:
1。db_return 的定义在"E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\dbug" 文件夹下

2。Od /I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\zlib"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\sql"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\regex"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\extra\yassl\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\dbug"
这些命令行参数是我附加进去的
huanglei0476 2009-05-25
  • 打赏
  • 举报
回复
这是有关命令行创建的一部分内容:

正在创建临时文件“c:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\mmdb\Debug\RSP00000412643588.rsp”,其内容为
[
/O2 /FD /EHsc /MT /GS- /Fo"Debug\\" /Fd"Debug\vc80.pdb" /c /TC /Od /I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\zlib"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\sql"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\regex"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\extra\yassl\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\dbug"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\hp_write.c"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\hp_update.c"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\hp_test1.c"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\hp_static.c"

这是命令行创建的另一部分:

正在创建命令行“cl.exe @"c:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\mmdb\Debug\RSP00000412643588.rsp" /nologo /errorReport:prompt”
正在创建临时文件“c:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\mmdb\Debug\RSP00000512643588.rsp”,其内容为
[
/O2 /FD /EHsc /MT /GS- /Fo"Debug\\" /Fd"Debug\vc80.pdb" /c /TP /Od /I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\zlib"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\sql"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\regex"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\extra\yassl\include"

/I "E:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\dbug"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\heap.cpp"

"e:\mysql-cluster-gpl-7.0.5-win-src\mysql-cluster-gpl-7.0.5\storage\heap\ha_heap.cc"
]
正在创建命令行“cl.exe @"c:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\mmdb\Debug\RSP00000512643588.rsp" /nologo /errorReport:prompt”
正在创建临时文件“c:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\mmdb\Debug\RSP00000612643588.rsp”,其内容为
[
/OUT:"C:\Documents and Settings\J01051162\My Documents\Visual Studio 2005\Projects\mmdb\Debug\mmdb.exe" /MANIFEST /MANIFESTFILE:"Debug\mmdb.exe.intermediate.manifest" /SUBSYSTEM:WINDOWS bufferoverflowU.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Debug\_check.obj"

".\Debug\_rectest.obj"

".\Debug\ha_heap.obj"

".\Debug\heap.obj"


这是vs2005 team edition的一部分输出:

正在编译...
cl : Command line warning D9025 : overriding '/O2' with '/Od'
hp_write.c
hp_update.c
hp_test1.c
hp_static.c
hp_scan.c
hp_rsame.c
hp_rrnd.c
hp_rprev.c
hp_rnext.c
hp_rlast.c
hp_rkey.c
hp_rfirst.c
hp_rename.c
hp_panic.c
hp_open.c
hp_info.c
hp_hash.c
hp_extra.c
hp_close.c
hp_clear.c
Generating Code...
Compiling...
hp_block.c
_rectest.c
_check.c
Generating Code...
正在编译...
cl : Command line warning D9025 : overriding '/O2' with '/Od'
heap.cpp
ha_heap.cc
Generating Code...
正在链接...
hp_write.obj : error LNK2019: 无法解析的外部符号 __db_return_,该符号在函数 _heap_write 中被引用
hp_rrnd.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rsame.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_scan.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_update.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rkey.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rlast.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rnext.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rprev.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_open.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_panic.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rename.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rfirst.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_close.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_extra.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_hash.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_info.obj : error LNK2001: 无法解析的外部符号 __db_return_
_check.obj : error LNK2001: 无法解析的外部符号 __db_return_
_rectest.obj : error LNK2001: 无法解析的外部符号 __db_return_
ha_heap.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_clear.obj : error LNK2001: 无法解析的外部符号 __db_return_
hp_rrnd.obj : error LNK2001: 无法解析的外部符号 __db_doprnt_
hp_scan.obj : error LNK2001: 无法解析的外部符号 __db_doprnt_
hp_write.obj : error LNK2001: 无法解析的外部符号 __db_doprnt_
huanglei0476 2009-05-25
  • 打赏
  • 举报
回复
呵呵,谢谢回复啊!!尽快帖出
fox000002 2009-05-25
  • 打赏
  • 举报
回复
“无法解析的外部符号”这个很可能是没有链接一些库文件

lz 可以把这部分错误贴出来,然后分析一下
Django框架概述Django 是用 Python 开发的一个免费开源的 Web 框架,提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。并且囊括的 Web 应用部分可以用于快速搭建高性能、优雅的网站。并且提供了通用 Web 开发模式的高度抽象,通过 DRY(Don't Repeat Yourself,不要重复自己)的理念为频繁进行的编程作业提供了快速解决方法。Django的特点1.自带管理后台 简单的几行代码就可以让目标网站拥有一个强大的管理后台,轻松对内容进行增加、删除、修改与查找操作,以及很方便地定制搜索、过滤等操作,因此特别适合用于内容管理平台。 2.灵活的路由系统 定义优雅的访问地址,还可伴随项目进行配置。 3.强大的数据库 ORM 强大的数据库操作接口(QuerySet API)可以轻松执行原生 SQL。 4.易用的模板系统 基于前后端分离系统可用 Django 开发 API,不使用模板系统,并也可以轻易替换成其他模板。 5.缓存系统 与 Memcached,Redis 等缓存系统联合使用,获得更快的加载速度,并且配置简单。 6.国际化支持 支持多语言应用,允许定义翻译的文字,轻松翻译成不同国家/地区的语言。 Django 发布情况功能版本(A.B,A.B+1,如 2.0,2.1 等)大约每 8 个月发布一次。这些版本将包含新功能以及对现有功能的改进等,也可能包含与上一个版本不兼容的功能,详细的说明在版本的发布日志(Release Notes)中可以查阅到。补丁版本(A.B.C,如 2.1.3)会根据需要发布,以修复错误和安全问题。这些版本将与相关的功能版本 100% 兼容,除非是出于安全原因或为了防止数据丢失而无法做到 100% 兼容。正因为如此,如果之前使用的是 Django 3.0,现在最新的版本是 Django 3.0.3,那么可以放心将 3.0 版本升级到 3.0.3版本。某些功能版本被指定为长期支持(LTS)版本,这种稳定版本通常自发布之日起 3 年以内,会持续发布安全和关键补丁,即所谓提供持续稳定的支持。从 Django 2.0 开始,它不再支持 Python 2。下图演示了 Django 各版本的发布情况和支持计划 Django 的 MVT 架构简介Django 是一个 Python Web 框架,和大多数框架一样支持 MVC模式。通过学习 MVC(Model-View-Controller)模式,了解 Django MVT(Model-View-Template)的不同之处。1.MVC 模式 MVC 是开发 Web 应用程序的一种软件设计模式,其中各部分功能如下: 模型(Model):位于模式底层,负责管理应用程序的数据。它处理来自视图的请求,并且响应来自控制器的指令以更新自身。 视图(View):负责向用户以特定格式呈现全部或部分数据。 控制器(Controller):控制模型和视图之间交互的代码。MVT 模式 MVT 与 MVC 区别在于 Django 本身已经实现了控制器(Controller)这部分的功能,暴露给开发者的是模板(Template)。所以可以简单认为 Django 中的模板是 HTML 文件,但其支持 Django 的模板语言。这种模板语言简单来说就是通过占位符、循环、逻辑判断等来控制页面上的内容展示。 Django 和其他 Python Web 框架的对比用于 Python Web 开发的框架有很多,比如 Flask、Bottle、Pyramid、Webpy 等。1. Django 和 Flask 的对比 Flask 是小而精的微框架(Micro Framework),它不像 Django 那样大而全。如果使用 Flask 开发,开发者需要自己决定使用哪个数据库 ORM、模板系统、用户认证系统等,需要自己去组装这些系统。与 Django 开发相比,开发者在项目开始的时候可能需要花更多的时间去了解、挑选各个组件,正因为这样,Flask 开发的灵活度更高,开发者可以根据自己的需要去选择合适的插件。由于是自己一步步地将整个系统组装起来的,因此也比较容易了解各个组件部分。当然,Flask 历史相对更短,第三方 App 自然没有 Django 那么全面。2. Django 和 Tornado 的对比 Tornado 是一个 Python Web 框架和异步网络库,最初由 FriendFeed 开发,当初设计它的目的是为了解决 10000 个并发连接(C10K 问题)。传统的 Apache 服务器会为每个 HTTP 请求连接一个线程,而在大多数 Linux 发行版中默认线程堆(Heap)大小是 8MB,当连接数量过多时,这种线程池的方式极易耗光服务器上的所有资源。Tornado 会把等待资源的操作挂起,当数据准备好时,再回调相应的函数。通过使用非阻塞网络 I/O,Tornado 可以轻松应对数万个连接。因而 Tornado 也就成为长轮询,是 WebSocket 和其他需要与每个用户建立长期连接的应用程序的理想选择。和 Django 相比,使用 Tornado 编写异步代码对于开发者来说,没有 Django 或 Flask 编写同步代码那么简单、直接和高效。使用 Python 进行 Web 开发合适吗?Python 简单易学、上手快速,成为很多程序员喜爱的编程语言。使用 Python 进行 Web 应用开发,无疑能够加快需求实现的速度,快速迭代和验证产品的原型。有些人可能会有疑问:Python 性能不够好,用来开发 Web 是不是不太合适?Python 在性能上确实无法和 C语言、Java 等语言相比,但在大部分情况下使用 Python 开发是可以满足性能需求的,并且很多时候程序性能不够好,这不是语言本身的问题,而是架构设计、缓存设计、数据结构算法的选用以及开发人员编程水平等引起的问题。总之,使用 Python 语言进行 Web 开发有独特的优势,通常能满足大部分应用场景的需求。 

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧