2016-11-02 42 views
0

我有一个解决方案,用于解决我想在OMNet ++项目中使用的名为SoPlex的线性编程问题。该软件包只有一个源文件夹,其中包含.h.cpp文件包的实现。我认为我需要从这些源文件和头文件中创建一个库。因此,我使用Code :: Blocks来创建包的动态库。如何将一组类添加到OMNet ++?

在OMNET ++,我去Project Features - >Makemake - >Link - >Additional librariers to link with

在这条道路,我进库soplexlib的名称。我还在Paths and Symbols部分中添加了库文件libsoplexlib.asoplexlib.dll的路径。 现在,当我建立项目时,它说它找不到没有这样的文件,如soplex.h,而在soplex包的源文件夹中有这样的文件。并且我在Paths and Symbols部分的Includes子项中为我的项目的属性添加了源文件和头文件的路径。

我失去了一些东西在这里?

回答

1

您的OMNeT++项目可能使用Makefile,因此在IDE中更改Paths and Symbols无法解决您的问题。
您应该去Project | Properties | OMNeT++ | Makemeke |选择root或src目录| Options,然后Custom | Makefrag和写入下列行:

EXTRA_OBJS += -LD:/foo/lib 
CFLAGS += -ID:/foo/src 

其中D:/foo/lib是含有libsoplexlib.a一个目录,和D:/foo/src - soplex.h

或者,您也可以删除先前添加的图书馆Link选项,并在Makefrag写:

EXTRA_OBJS += -LD:/foo/lib -lsoplexlib 
CFLAGS += -ID:/foo/src 

此外,我建议把详细模式的编译器。要执行此操作,请转到C/C++ Build,取消选中Use default build command并在命令末尾写入:V=1

0

另一种方法是将.cpp文件重命名为.cc并将所有文件复制到源目录中。重新生成makefile(如果您使用的是IDE,则会自动完成),然后进行设置。 makefile生成器自动获取源文件夹中的所有.cc文件。

+0

你的意思是我将soplex包中的所有.cpp文件更改为.cc,并将所有.cc文件(包括.soplex包的.h文件)复制到我的omnet项目的源目录中? – Masoud

+0

我认为这是不适合的选择..作为图书馆链接似乎更直接。 – Ventu

+0

你遵循的方法实际上取决于给定的第三部分组件的大小。如果只有几个.cc文件,将它们放入项目中可能会更容易(当然编译器的包含路径仍必须设置,以便.cc文件可以访问包含文件)。对于更大的项目,库方法可能更有效(因为每次重建项目时都不必重建第三方组件)。 – Rudi