我使用动态编译和加载的库。我的解决方案是让我更轻松地创建一个我称之为编译所有内容的bash代码,但我目前正致力于将其移植到Windows而我不知道如何实现相同的目标。结果
此外,它是QT应用程序,因此需要使用qmake而不是g ++。
代码I执行:(我总是提供带有文件名的参数)
#! /bin/bash
cd "${0%/*}";
if [ $# = 0 ]; then echo "Error: No Arguments Supplied"; exit 7; fi;
if ! [ -a "$1.cc" ]; then echo "Error: Invalid Arguments Supplied"; exit 7; fi;
rm -f "$1.so";
cp template.pro tmp.pro;
echo "QT += widgets" >> tmp.pro;
echo "SOURCES += $1.cc" >> tmp.pro;
echo "CONFIG += c++11" >> tmp.pro;
qmake -norecursive tmp.pro;
make;
mv libtmp.so.1.0.0 "$1.so";
rm -f Makefile tmp.pro *.o;
find . -name 'libtmp.so*' -delete;
答案 0 :(得分:1)
首先,您需要在Windows机器上安装bash。例如,阅读here或here(我相信还有很多其他资源可供您阅读有关在Windows上执行bash脚本的信息)
其次,遗憾的是,您的template.pro
和tmp.pro
文件在Linux(或Unix)和Windows之间不兼容。代码中最明显的例子是libtmp.so
- 在Windows库中将有不同的名称和扩展名.dll
,但也会有其他差异。
您需要在.pro
文件中使用条件:
#
# Windows section:
#
win32 {
# pro text for Windows here
}
#
# Linux/Unix section
#
unix {
# pro text for Linux/Unix here
}
# possible common part here