小编pby*_*ian的帖子

GCC / LD找不到链接库

操作系统:Windows 7 Enterprise x64 IDE:Eclipse Juno / CDT编译器:MinGW 4.6.2(C:\ MinGW)

user697111一样,我无法通过ld.exe查找外部库。

简单的程序可以编译并很好地链接,但是当我尝试使用提供的库添加SQL函数时,我在Eclipse中收到以下错误消息:“ c:/ mingw / bin /../ lib / gcc / mingw32 / 4.6.2 /。 ./../../../mingw32/bin/ld.exe:找不到-lC:\ MinGW \ lib \ libodbc32.a”。

我将C:\ MinGW \ lib指定为项目库路径。我将C:\ MinGW \ lib \ libodbc32.a指定为唯一的项目库(这使IDE中无法解决的引用错误消失了)。

我切换到CLI并粘贴了compile命令。对于库名称,我尝试过:odbc32,odbc32.a,libodbc32,libcodbc32.a我也尝试过:odbccp32,odbccp32.a,libodbccp32,libodbccp32.a我已经使用了正斜杠,反斜杠,双反斜杠,引号在路径周围用引号将整个-l参数引起来(这是Eclipse对-L参数的作用)。

我将库复制到包含已编译代码的目录中,从而无需指定路径。我将它们复制到包含ld.exe的目录中。我更新了Windows路径以包含目录,并重新启动了Eclipse和CLI。

如果我完全删除-l参数,则会遇到各种未解决的引用错误。ld.exe似乎正在查找该库,但倾向于隐藏实际问题。

链接到内置SQL库的秘密是什么?

c++ mingw g++ ld

5
推荐指数
1
解决办法
5884
查看次数

被通缉的朋友功能包括

Class A是class实例的唯一实例化器和容器B

因此,将类的构造函数设为B私有,并且仅通过在class中声明并在class中B定义的朋友函数来调用它似乎是一个好主意A

文件Ah(编辑:包含在类B中定义的枚举)

#ifndef   A_H
#define   A_H

#include "B.h"

using namespace std;

class A
{   public:
    A();
    shared_ptr<B> CreateBInstance( const B::ENUM_STANDARD_COLORS );
    shared_ptr<B> CreateBInstance( const string );  // Custom color

    private:
    unique_ptr<map<int, shared_ptr<B>>> UPTR__BInstancesMap;
}
#endif
Run Code Online (Sandbox Code Playgroud)

文件Bh(编辑:包含在类B中定义的枚举)

#ifndef   B_H
#define   B_H

#include "A.h"  // Causes chaos

using namespace std;

class B
{   public:
    enum class ENUM_STANDARD_COLORS : unsigned int
    {   ...     // ~70 standard colors
    };

    private:
    B(); …
Run Code Online (Sandbox Code Playgroud)

c++ circular-dependency friend include

5
推荐指数
1
解决办法
146
查看次数

标签 统计

c++ ×2

circular-dependency ×1

friend ×1

g++ ×1

include ×1

ld ×1

mingw ×1