从 dll 生成库 -执行>错误
Generate lib from dll -> error on exec
我正在尝试使用SUN LDAP C SDK(https://oss.oracle.com/projects/sun-ldapcsdk/)。zip包括.h和.dll,而不是.lib,所以我需要生成.lib。我使用dumpbin.exe、expdef.exe(http://purefractalsolutions.com/show.php?a=utils/expdef)和lib.exe为nsldap32v50.dll执行此操作。def文件的摘录:
库NSLDAP3V50.dll
出口
ldap_放弃@10
ldap_add@11
ldap_unbind@13
ldap_compare@19
ldap_delete@20
ldap_result2error@21
ldap_err2string@22
ldap_modify@23
ldap_modrdn@24
ldap_open@25
ldap_first_entry@26
ldap_next_entry@27
ldap_get_dn@30
ldap_dn2ufn@31
ldap_first_attribute@32
ldap_next_attribute@33
ldap_get_values@34
ldap_get_values_len@35
要测试的小代码:
#include <ldap.h>
int main(int argc, _TCHAR* argv[])
{
LDAP *ld;
LDAPMessage *result, *e;
BerElement *ber;
char *a, *dn;
char **vals;
int i;
int ldversion = LDAP_VERSION3;
int debuglevel = 7;
LDAPControl **ctrls = NULL;
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debuglevel);
/* get a handle to an LDAP connection */
std::cout << "Hellow World !" << std::endl;
return 0;
}
链接时我有一个错误:
TestLdapSun.obj:错误LNK2001:未解析的外部符号_ldap_set_option@12TestLdapSun.exe:致命错误LNK1120:1个未解析的外部
问题是,链接器搜索_ldap_set_option@12但是lib具有_ldap_set选项。为了修复这个错误,我修改了.h文件:
之前:
#define LDAP_PASCAL __stdcall
#define LDAP_CALL LDAP_PASCAL
LDAP_API(int) LDAP_CALL ldap_set_option( LDAP *ld, int option, const void *optdata );
之后:
#define LDAP_PASCAL __cdecl
#define LDAP_CALL LDAP_PASCAL
LDAP_API(int) LDAP_CALL ldap_set_option( LDAP *ld, int option, const void *optdata );
好的,链接器现在工作,没有任何警告。启动.exe文件,可以,但以错误结束
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function pointer declared with a different calling convention.
我认为这个错误来自于我将__stdcall修改为__cdecl或.h文件,但没有这个链接器就无法链接。
知道吗?
谢谢;)
导出定义文件没有条目ldap_set_option
。因此,导入库没有用于解析链接器请求的符号。.DEF文件中缺少符号的原因很可能是DLL没有导入它。
请检查.MAP文件中解析外部符号_ldap_set_option
的模块。查找正确的实现并使用它。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- 错误c++visual studio c2227左侧'->;Init';必须指向类/结构/联合/泛型类型
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 链接器(MinGW的ld v2.23.2)错误,格式:-L<SOMEDIR>-l<lib1-l<l