所以,我一直在使用JPIB与我的java程序中的GPIB设备进行通信.但是,我遇到了麻烦.较新的系统基于64位操作系统.但是,jpib.dll文件是用32位编写的.我想不出它需要做出的真正64位依赖的任何类型的调用.
真正的麻烦在于,自2006年9月以来,JPIB项目还没有更新.我曾尝试通过SourceForge向开发者发送电子邮件,但我认为我不会随意使用它.
有没有人知道这方面的任何方法?或者知道如何(并且可以告诉我如何)将.dll重新编译为AMD-64合规性?
因此,我开发了一个系统,只要用户尝试保存并且数据库连接不存在,就会将数据库插入/更新命令保存到文本文件中.文件中的每一行都是一个插入或更新命令.但是,我似乎遇到了一个问题.
有些文件似乎不想通过第一行读取.所有这些都有一个共同点 - 因为数据库中有与第一个插入对应的数据,我跳过它,因为输入后不允许更改该信息.但是,当我尝试读取下一行时,它会启动,因为该readLine()命令返回null(这会导致其余代码按预期失败).
我尝试while(!ready() Thread.sleep(500))在下一个之前添加一个readLine(),但它只是无限期地坐在那里(我让它在杀死JVM之前大约需要10分钟).我还尝试过只添加一个else块来检查数据库中是否存在数据,该数据暂停2秒,但问题仍然存在.
请注意,任何以不存在的数据插入开头的文件都可以正常工作.
有没有人对如何解决这个问题有任何想法?
编辑:这是从顶部到等待准备的代码
private static boolean loadExistingData()
{
File dir = new File(Configuration.DBOutputDataLocation);
// Attempt to create the directory in case it doesn't exist.
if(!dir.exists())
{
if(!dir.mkdir())
{
return false;
}
}
String[] existingFiles = dir.list();
System.out.println(existingFiles.length);
if(existingFiles == null || existingFiles.length == 0)
{
return false;
}
else
{
BufferedReader fileReader = null;
DatabaseAccessor dba = DatabaseAccessor.getInstance();
// Pull out the files, submit each one.
for(int i …Run Code Online (Sandbox Code Playgroud) 所以,我有这种情况:
vector<vector<double>> myVector;
myVector.resize(somePreviousObject.size());
for(int i = 0; i < myVector.size(); i++)
{
vector<double> tempVector;
//Do some stuff that fills tempVector, in a loop
//After loop:
myVector[i].push_back(tempVector);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生编译错误,说明:
no matching function for call to 'std:;vector<double, std::allocator<double > >::push_back(std::vector<double, std::allocator<double> >&)'
...stl_vector.h:733 note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = double, _Alloc = std::allocator<double>]
Run Code Online (Sandbox Code Playgroud)
我意识到使用向量向量不是性能友好的,但它仍然应该编译和执行,对吗?为什么不呢?
谢谢你的帮助.