当静态库不可用时,是否可以从Linux交叉编译?

时间:2016-03-14 04:38:53

标签: c++ linux qt dll cross-compiling

我正在尝试使用Qt,OpenCV和FlyCapture2库将项目编译为Windows 8目标系统的可执行文件。我正在运行ubuntu 14.04。不幸的是,FlyCapture2 SDK只提供共享库,所以我无法静态编译它们。

我可以简单地将库包含在与可执行文件相同的目录中,但是看看我是如何在Linux上构建项目的(使用Qt Creator)我不确定如何正确链接Windows目标系统。这是我目前的.pro文件:

CONFIG+=static

INCLUDEPATH += /usr/local/include/
LIBS += -L/usr/local/lib -static -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_videoio -lopencv_imgproc
LIBS += -L/usr/lib -lflycapture -lflycapture-c -lflycapturegui
## Is it possible to link to a .dll for windows here? 

是否可以链接到Windows目标系统的.dll?我没有看到这个问题的解决方案吗?这是我第一次尝试交叉编译。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:     export LD_LIBRARY_PATH = your_curreny_so_lib_path 然后     使

答案 1 :(得分:0)

您可以尝试以下内容:

class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.menu()

    def menu(self):
        self.parent.title("Simple menu")
        menubar = Menu(self.parent)
        self.parent.config(menu=menubar)
        configmenu = Menu(menubar, tearoff=0)
        configmenu.add_command(label="Add Player", command=self.addplayer)
        menubar.add_cascade(label="Config", menu=configmenu)
        menubar.add_command(label="Exit", command=self.onexit)

    def onexit(self):
        self.quit()

    def addplayer(self):
        toplevel = Toplevel()
        toplevel.focus_set()
        Label(toplevel, text='first name').grid(row=1, column=0, sticky='W')
        fn = Entry(toplevel, text='first name')
        fn.grid(row=1, column=1, sticky='W')
        indb = insertdb()
        Button(toplevel, text='Save', command=indb.foo(fn.get())).grid(row=4, column=0, pady=1)
        Button(toplevel, text='Abort', command=toplevel.destroy).grid(row=4, column=1, pady=1)


class insertdb():
    def __init__(self):
        # db foo
        return

    def foo(self, fn):
        # toplevel.destroy()
        print(fn)

这可能对你有用。希望这有助于。