小编jav*_*ava的帖子

使用共享库在Linux中编译C程序

我试图在Linux中使用共享库编译一个简单的C程序.

我在同一个文件夹中共同拥有以下文件:

mymain.c

 #include "myclib.h"
 int main() {
   func();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

myclib.h

 void func();
Run Code Online (Sandbox Code Playgroud)

myclib.c

#include <stdio.h>
void func() {

   printf("hello world!!!!!!!!!!!!\n");

} 
Run Code Online (Sandbox Code Playgroud)

然后我按照以下步骤操作:

  • gcc -c fPIC myclib.c (创建memoryaddress独立的objectfile)

    产生:myclib.o

  • gcc -shared -fPIC -o libmyclib.so myclib.o (创建共享库)

  • gcc -c mymain.c (从main.c创建一个目标文件)

到目前为止一切顺利 - 然后我准备好以下文件:

  • main.o
  • libmyclib.so

所以我尝试用这种语法创建一个程序:

gcc -o program -lmyclib -L. mymain.o

(我猜libmyclib的前缀lib应该替换为l?)

但我从gc编译器收到错误消息:

 *mymain.o: In function `main':
 mymain.c:(.text+0xa): undefined reference to `func'
 collect2: error: ld returned 1 exit status*
Run Code Online (Sandbox Code Playgroud)

我也测试了这个语法:

gcc -o program mymain.c -L -lmyclib -Wl,-rpath,. …

c linux gcc shared-libraries

5
推荐指数
1
解决办法
2525
查看次数

Javascript setattribute - 名称和值不起作用

当我实现此代码时 - 复选框的名称不会显示在浏览器中的复选框旁边 - 只是复选框本身。这是什么原因?我是否错误地使用了 setattribute-function?

<script type="text/javascript">

    var x = document.createElement("INPUT");
    x.setAttribute("type", "checkbox");
    x.setAttribute("value", "car");
    x.setAttribute("name", "vehicle");
    document.body.appendChild(x);

</script>
Run Code Online (Sandbox Code Playgroud)

javascript dom setattribute

5
推荐指数
1
解决办法
2885
查看次数

链表行和列 - jquery

我想知道如何使用链接在jquery中编写代码?

var table = document.getElementById("deliver_alt_table");
var rows = table.getElementsByTagName("tr");
$(rows[0].children[1]).css('visibility', 'hidden');
Run Code Online (Sandbox Code Playgroud)

这段代码有效 - 但是如何使用一行在jquery中编写?

javascript jquery method-chaining

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

c语言scanf - fflush(stdin) - 不起作用

当我多次使用scanf时,程序不会等待另一个输入.相反,它退出

我了解到我可以在scanf函数中的转换说明符之前放置一个空格 - 是的,这解决了问题,我想这与输入流有关,即 - 如果它是输入流中的换行符,scanf将消耗它立刻.

scanf(" %f", &value);
Run Code Online (Sandbox Code Playgroud)

但如果是这样 - 为什么我不能使用fflush(stdin)呢?我试过但它不起作用.

#include <stdio.h>

int main(void)
{
    float value;
    char ch;

    printf("input value: ");
    scanf("%f", &value);
    fflush(stdin);
    printf("input char: ");
    scanf("%c", &ch);

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

c stdin scanf fflush

3
推荐指数
2
解决办法
3364
查看次数

getSupportFragmentManager()-对于上下文类型未定义

实例化Fragment类时如何解决以下问题

holder.infoView.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) {
       Fragment infoFragment = new ExampleFragment();
                    infoFragment.show(context.getSupportFragmentManager(), "settings");

     ....
Run Code Online (Sandbox Code Playgroud)

该代码所属的实际类(MySimpleArrayAdapter)- 扩展FragmentActivity- 但从扩展该类的另一个类中获取上下文(通过构造函数)。

完全一样,我不能使用诸如

 infoFragment.show(context.getSupportFragmentManager(), "settings");
Run Code Online (Sandbox Code Playgroud)

我收到错误:方法Context类型的getSupportFragmentManager()未定义。

是否有解决此问题的简单方法?

android android-context android-fragments

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

Polymoprhism - 子类共享基类私有成员

为什么子类不使用polymoprhism在超类中共享相同的私有成员变量?只有一个基类实例,如果SubA通过mutator设置私有成员 - 那么为什么SubB不能访问该值.如果我希望子类共享同一个私有成员,它会是什么样子?

 #include <iostream>
class Super {

   private:
     int cnt;
   public:
     int getCnt() {
        return cnt;
     }
     void setCnt(int cnt) {
        this->cnt = cnt;
     }
};

class SubA: public Super {

};

class SubB: public Super {

};

int main() {

  Super *super;
  SubA a;
  SubB b;

  super = &a;
  super->setCnt(10);
  super = &b;
  std::cout << super->getCnt() << std::endl;
  super = &a;
  std::cout << super->getCnt() << std::endl;

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

生产:

-8589546555 (garbage)
10
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

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

将指针传递给scanf()会产生分段错误

这段代码有什么问题?

void input(int *nmbrOfUnits);    

int main() {  
   int *nmbrOfUnits;
   input(nmbrOfUnits);
}

 void input(int *nmbrOfUnits) {
        printf("numnber if units: ");
          scanf(" %d", nmbrOfUnits);

  }
Run Code Online (Sandbox Code Playgroud)

编辑:变量是在main中创建的,这应该意味着如果主调用输入变量没有从堆栈中加载.我为什么要在堆上分配它?我传递一个指针并在scanf中使用它.为什么我在这里遇到分段错误?

c pointers segmentation-fault

0
推荐指数
1
解决办法
108
查看次数

Java - 使用Thread而不是SwingWorker

我无法真正获得使用swingworker的优势,而不仅仅是将繁重的任务放在一个(简单的)后台线程中.

这只是一个codesnippet,但显示了计算整数并将值放在JLabel中的任务.(这是在ActionPerformed中)

Thread t = new Thread() {
    public void run() {
        for (int i = 0; i < 2000000; i++) {
            counter++;
            label.setText(Integer.toString(counter));       
        }
    }
};

t.start();
Run Code Online (Sandbox Code Playgroud)

我被告知使用抽象的SwingWorker类并覆盖doInBackground,processdone等方法,而不是这个简单的代码片段.

只需使用Thread更新标签,它就可以正常工作.为什么要创建一个扩展swingworker并实现抽象方法的新类?我现在只能把Swing-worker视为线程安全,那是答案吗?

java swing multithreading thread-safety swingworker

0
推荐指数
1
解决办法
327
查看次数

显示隐藏的输入javascript/jquery

为什么隐藏的形式在失去焦点时不显示?离开输入时警报很好,但其他隐藏的形式仍然不存在.

HTML

<body>
   <input type="text" id="myinput" value="">
   <input type="hidden" id="validation_message_email" value="enter a valid email">
</body>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

window.onload = function() {
   $("#myinput").blur(myAlert);
};

function myAlert() {
   alert("This input field has lost its focus.");
   $("#validation_message_email").show();
}
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

0
推荐指数
1
解决办法
143
查看次数