我通过我的Android应用程序访问图形API时遇到问题,该应用程序将用户的朋友检索为JSONObject,提取其名称并在屏幕上显示它们.它应该是一个简单而直接的任务,但显然它不是.当我在Android Nexus I上运行我的应用程序时,我登录到Facebook,然后我被要求单击"允许"按钮授予权限,我被重定向到空白页面.我期待看到我的朋友的名字,但它不会发生.有人可以帮助我.
public class Login extends Activity
{
Facebook mFacebook = new Facebook("201509899926116");
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);
String FILENAME = "AndroidSSO_data";
private SharedPreferences mPrefs;
View linearLayout;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout = findViewById(R.id.main_layout);
/* Get existing access_token if any */
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null)
{
mFacebook.setAccessToken(access_token);
}
if(expires != 0)
{
mFacebook.setAccessExpires(expires);
}
/* Only call authorize if the access_token has expired. …Run Code Online (Sandbox Code Playgroud) 我希望多播到不超过4台计算机的组中,MPI_bcast是否仍比多个单播节省大量时间(请注意我的组很小)?
给定机器的数量和这些机器的等级,我编写了以下函数来创建新的通信器。
void createCommunicator(MPI_Comm *NGBRS_WORLD, int num_ngbrs, int *ngbrs_ranks)
{
MPI_Group NGBRS_GROUP, MPI_COMM_GROUP;
int ret = MPI_Comm_group(MPI_COMM_WORLD, &MPI_COMM_GROUP);
printf("RETURNED %d\n", ret);
ret = MPI_Group_incl(MPI_COMM_GROUP, num_ngbrs, ngbrs_ranks, &NGBRS_GROUP);
printf("RETURNED %d\n", ret);
ret = MPI_Comm_create(MPI_COMM_WORLD, NGBRS_GROUP, NGBRS_WORLD);
printf("RETURNED : %d\n", ret);
}
Run Code Online (Sandbox Code Playgroud)
当我调用此函数时,输出为:
RETURNED 0
RETURNED 0
Run Code Online (Sandbox Code Playgroud)
该程序只是挂在MPI_Comm_create
关于可能出什么问题或如何调试问题的任何想法?请注意,我已将ngbrs_ranks动态分配为num_ngbrs大小。
我有一个应用程序,其中各种实体通过套接字相互通信,我正在使用C编程语言.当实体向另一个实体发送长消息时,recv()函数可能会部分地读取此消息.因此,我必须通过附加所有收到的部分在接收方重新构建消息.
我的问题是与recv()相关的一般套接字编程问题.recv()如何知道消息何时被完全读取?我应该使用"\n"这样的特殊字符终止消息吗?或者我应该将邮件的大小作为标题发送?常见的做法是什么?
我目前正在使用tbb的并发哈希映射来执行并发插入哈希映射.每个键都是一个字符串,值是整数的向量.我想实现以下内容:在插入期间,如果密钥不存在,我插入它并将值添加到其向量.如果存在,我只需将值添加到其向量中.
在检查tbb并发哈希映射API之后,我注意到find和insert函数都只返回布尔值.那么如果它存在,如何返回指向键的指针呢?
我正在使用迭代器遍历整个tbb并发哈希映射并检查每个(键,值)对.
for (MAP::pair = myHashTable.begin(); myHashTable.end(); pair++)
Run Code Online (Sandbox Code Playgroud)
如何并行化这个迭代器?
我想从C文件中调用C++函数,我已经阅读了有关extern"C"构造和包装器API的内容.但是,我不确定如何组织各种头文件以及如何链接目标文件.
假设我有一个C文件MyProg.c及其相应的头文件MyProg.h.
现在,我创建了两个文件Wrapper.cpp和Wrapper.h,它们声明了我想从MyProg.c调用的函数.
// Wrapper.h
#include "Utility.h"
#ifdef __cplusplus
extern "C" {
#endif
void func_to_invoke();
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
请注意,Wrapper.h包含一个包含其他实用程序C++函数的文件.
问题是如何编译和链接文件.我应该做以下事情:
g++ -c Utility.cpp Utility.h
g++ -c Wrapper.cpp Wrapper.h Utility.h
gcc -c MyProg.c MyProg.h Wrapper.h
gcc MyProg.o Wrapper.o
Run Code Online (Sandbox Code Playgroud)
编辑:
我试过以下,我仍然无法编译.我有与C++库相关的页面和错误页面.我是否还应该在__cplusplus宏中声明Utility.h中的所有函数?
g++ -c Utility.cpp
g++ -c Wrapper.cpp
gcc -c MyProg.c
g++ MyProg.o Wrapper.o Utility.
Run Code Online (Sandbox Code Playgroud)
解:
必须从Wrapper.h中删除Utility.h并将其包含在Wrapper.cpp中
我有混合的C和C++文件,它们共同构成了我的程序.我正在使用boost无序哈希映射,我最初定义为:
typedef boost::unordered_map<char *, int> my_map;
Run Code Online (Sandbox Code Playgroud)
然而,地图表现得很奇怪; find(key)找不到哈希映射中实际存在的键.然后,我将定义更改为:
typedef boost::unordered_map<std::string, int> my_map;
Run Code Online (Sandbox Code Playgroud)
现在哈希映射工作正常.然而,为了使用地图,我将char*转换为std :: string是不方便的.有没有办法让第一个定义有效?
我下载了一个java程序,它包含两个文件夹src和分别包含源文件和类文件的类.现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件.更确切地说,源文件和类文件的路径是src/edu/univ/.java和classes/edu/univ/.class.鉴于包含main函数的文件是Main.java,如何从命令行运行该程序.
我试过了:
java src/edu/univ/Main but I get Exception in thread "main" java.lang.NoClassDefFoundError: src/edu/univ/Main
Run Code Online (Sandbox Code Playgroud)
我也尝试过:java src.edu.univ.Main但我遇到了类似的错误
我知道这个先前已经被问过堆栈溢出的东西,但我已经尝试了所有建议作为解决方案,但没有任何作用.我的问题很简单,我正在尝试定义一个unsigned long,它必须采用允许的最大可能值.
#define SIZEOF_ULONG (sizeof(long) * 8);
#define LARGEST_VALUE (1ULL << ((SIZEOF_ULONG)-1));
Run Code Online (Sandbox Code Playgroud)
其中ulong的typedef为无符号长.我收到一个警告,左移计数> =类型的宽度.我在我的64位机器上检查了unsigned long的大小,它是8B.最后,我尝试使用-m64标志进行编译,但都是徒劳的.
有任何想法吗?