小编sim*_*onc的帖子

找不到/ usr/local/lib中的库

我正在使用名为ohNet的框架构建应用程序.构建框架后,可以通过安装框架make install.默认情况下,库安装在/usr/local/[lib|include]文件夹中.好.

我正在使用eclipse进行开发.为了使用这个库我必须设置包含路径库(在这种情况下usr/local/include/ohNet),设置链接的搜索路径(-L)( /usr/local/lib/ohNet)和特定的库(-l)(在这种情况下,我选择了一个名为库libohNet.so在这个文件夹.当我在eclipse中构建项目时它工作正常,但是如果我尝试运行该程序,我面临以下消息:

error while loading shared libraries: libohNet.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经仔细检查了这个,文件libohNet.so就在这个目录中!是什么原因导致无法找到此文件?

我在google上搜索并发现了一些帖子,说这是安装库/usr/local/lib而不是/usr/lib 看到这里有问题 ...我是否必须配置一些额外的设置eclipse才能ld在此路径中识别库?这是什么解决方案?

问候

c++ eclipse linker build libraries

27
推荐指数
1
解决办法
3万
查看次数

什么是`long double`的格式说明符

我正在研究适用于各种Unix和Windows 32位和64位操作系统的应用程序.

我使用的long double数据类型,当我这样做sprintf(),并使用long double%lf 在它然后正常工作与Windows不提供任何类型的错误,但是在Solaris平台上它给核心转储.

相同问题的示例代码如下.

void main(){
    string size = "16622";
    string sizeFact = "20";
    long long sizeLongLong = strtoll(size);
    int factInt = atoi(sizeFact);
    long double sizeLongDouble = (long double) sizeLongLong/pow(2, factInt);
    char buf[512];
    sprintf(buf, "%.3lf %s", sizeLongDouble, "str");    
}
Run Code Online (Sandbox Code Playgroud)

如上所述,代码在Windows 32位和64位上运行良好,但对于sprintf,它在Solaris上为我提供了核心.

我尝试在sprintf中进行类型转换,它运行良好.

sprintf(buf, "%.3lf %s", (double) sizeLongDouble, "str");
Run Code Online (Sandbox Code Playgroud)

什么是格式说明符long double

我在这里犯的错是什么,我使用了错误的格式说明符,因为它给了核心?

为什么我需要在sprintf()中再次输入强制转换?

c c++

23
推荐指数
1
解决办法
4万
查看次数

在C++中查找String数组的大小

所以我有一个字符串数组.这是一个例子:

string array[] = {"Example", "Example2", "Example3"};
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以找到像上面那样的数组中的元素数量.我不能使用这种方法:

int numberofelements = sizeof(array)/sizeof(array[0]);
Run Code Online (Sandbox Code Playgroud)

这是因为元素的大小不同.还有另外一种方法吗?

c c++ arrays

21
推荐指数
5
解决办法
7万
查看次数

C++ lzma按部分压缩和解压缩大流

我需要动态地进行lzma压缩和解压缩.我在Qt中通过qnetworkmanager收到一个大文件,我需要在下载数据流时解压缩它.

当我收到部分数据流时,我需要将其解压缩,附加到文件,然后在此过程中释放任何已用内存.做这个的最好方式是什么?

现在我正在尝试使用xz-utils,纯c api,也许有人可以提出更好的方法吗?

以下代码基于示例

UPD2:

extern "C" void *lz_alloc(void *opaque, size_t nmemb, size_t size)
{
void *p = NULL;
try{
    p = new char [size];
}
catch(std::bad_alloc &ba)
{
    p = NULL;
}
return p;
}

extern "C" void lz_free(void *opaque, void *ptr)
{
delete [] (char*)ptr;
}


QByteArray lzCompress(QByteArray data)
{
QByteArray arr;
lzma_check check = LZMA_CHECK_CRC64;
lzma_stream strm = LZMA_STREAM_INIT; /* alloc and init lzma_stream struct */
lzma_allocator al;
al.alloc = lz_alloc;
al.free = lz_free; …
Run Code Online (Sandbox Code Playgroud)

c++ qt lzma

17
推荐指数
1
解决办法
7533
查看次数

表格没有出现,但其内容确实如此

我有这段代码:

<div>
   <form name='profileForm' id='profileForm' action='' method='get'>
      <input type='submit' name='ProfileBtn' id='ProfileBtn' class='buttonC' value='My Profile' />
   </form>
<br />
   <form name='logoutForm' id='logoutForm' action='' method='get'>
      <input type='submit' name='LogOutBtn' id='LogOutBtn' class='buttonC' value='Logout' />
   </form>
</div>
Run Code Online (Sandbox Code Playgroud)

当我渲染上面时,"profileForm"没有出现(尽管profileBtn出现了).这种形式没有问题,这很奇怪,因为它们都很相似.

这可能是一个简单的问题,但我不知道问题是什么.

html forms appearance

15
推荐指数
4
解决办法
1万
查看次数

Linux:检查消息队列是否为空

我想知道队列消息是否为空.我使用msg_ctl()如下,它不起作用:

struct msqid_ds buf;
int num_messages;

rc = msgctl(msqid, IPC_STAT, &buf);
Run Code Online (Sandbox Code Playgroud)

我用过这个偷看功能:

int peek_message( int qid, long type )
{
    int result, length;
    if((result = msgrcv( qid, NULL, 0, type, IPC_NOWAIT)) == -1) {
        if(errno==E2BIG)
            return(1);
    }

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都会在向队列发送消息之前和之后得到相同的结果.

消息成功进入队列,我已经通过阅读我发送的内容进行了测试.

c linux ipc message-queue

11
推荐指数
1
解决办法
5373
查看次数

C结构的内部一致性

如果我有两个C结构初始化为具有相同的成员,我可以保证:

memcmp(&struct1, &struct2, sizeof(my_struct))
Run Code Online (Sandbox Code Playgroud)

永远都会归零?

c struct memcmp

11
推荐指数
2
解决办法
303
查看次数

调试在NUnit下运行的测试

我有一个.NET 4.0 C#解决方案和一个在NUnit下运行单元测试的测试项目.NUnit二进制文件是v3.5.

我可以很好地运行测试,但不能在visual studio中设置断点和单步.我猜这是由.NET版本中的不匹配引起的.有没有办法使用nunit for v3.5单步执行v4.0测试程序集?

c# nunit

10
推荐指数
2
解决办法
9848
查看次数

使用hWnd设置Window.Owner

在我的WPF/C#应用程序中,我正在使用如下代码创建一个对话框窗口:

Window dialog = new MyDialog() as Window;
dialog.Owner = Window.GetWindow(this);
dialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

如何将对话框所有者设置为另一个应用程序窗口的hWnd?

我需要的功能就是在对话框可见时阻止"所有者窗口".

c# wpf winapi

10
推荐指数
2
解决办法
5862
查看次数

可以将本地和寄存器变量声明为extern吗?

我一直想知道extern是否可以在本地声明和寄存器变量.如果它可能会受到什么限制?

c extern

10
推荐指数
3
解决办法
4459
查看次数

标签 统计

c ×5

c++ ×4

c# ×2

appearance ×1

arrays ×1

build ×1

eclipse ×1

extern ×1

forms ×1

html ×1

ipc ×1

libraries ×1

linker ×1

linux ×1

lzma ×1

memcmp ×1

message-queue ×1

nunit ×1

qt ×1

struct ×1

winapi ×1

wpf ×1