对于一个研究项目,我正在为科学计算语言编写C++插件.不幸的是,允许用户执行此操作的库不能保持最新状态.
我在XCode中开始了这个项目,它在那里建造得很好.后来我不得不转移到PC,所以我将代码迁移到Visual Studio 2015.由于这样做,我由于以下错误而无法构建:
LNK2001 : unresolved external symbol _sprintf
LNK2019 : unresolved external symbol _sscanf referenced in function _GetDDouble
LNK2019 : unresolved external symbol _sprintf referenced in function _CheckRunningInMainThread
Run Code Online (Sandbox Code Playgroud)
尝试修复是添加标头#define _CRT_SECURE_NO_WARNINGS.但是,这a)修复了没有错误,b)添加了警告C4005 : '_CRT_SECURE_NO_WARNINGS': macro redefinition.我假设库已经定义了这个宏,预见到了这个问题.无论如何,它没有解决问题.
我该怎么办?
我刚刚设置为使用python与Python 2.6.到目前为止,除了处理"导入"语句之外,它运行良好:我似乎无法以与我的程序相同的方式响应导入.
我的目录结构如下:
src/
main.py
util.py
test/
test_util.py
geom/
vector.py
region.py
test/
test_vector.py
test_region.py
Run Code Online (Sandbox Code Playgroud)
要运行,我python main.py从src/调用.
在main.py中,我导入了vector和region
from geom.region import Region
from geom.vector import Vector
Run Code Online (Sandbox Code Playgroud)
在vector.py中,我导入了区域
from geom.region import Region
Run Code Online (Sandbox Code Playgroud)
当我在标准运行中运行代码时,这些都可以正常工作.但是,当我从src /调用"py.test"时,它会一直退出导入错误.
我的第一个问题是,当运行"test/test_foo.py"时,py.test无法直接"导入foo.py".我通过使用"imp"工具解决了这个问题.在"test_util.py"中:
import imp
util = imp.load_source("util", "util.py")
Run Code Online (Sandbox Code Playgroud)
这适用于许多文件.它似乎也暗示当pytest运行"path/test/test_foo.py"来测试"path/foo.py"时,它基于目录"path".
但是,"test_vector.py"失败了.Pytest可以找到并导入vector模块,但它无法找到任何vector的进口.使用pytest时,以下导入(来自"vector.py")都会失败:
from geom.region import *
from region import *
Run Code Online (Sandbox Code Playgroud)
这些都给出了表格的错误
ImportError: No module named [geom.region / region]
Run Code Online (Sandbox Code Playgroud)
我不知道接下来要做什么来解决这个问题; 我对Python中导入的理解是有限的.
使用pytest时处理导入的正确方法是什么?
在vector.py,我更改了import语句
from geom.region import Region
Run Code Online (Sandbox Code Playgroud)
简单地说
from region …Run Code Online (Sandbox Code Playgroud) 我在一个Scheme类中,我很好奇在不使用define的情况下编写递归函数.当然,主要的问题是,如果没有名称,你就无法调用自身内部的函数.
我确实找到了这个例子:它是一个只使用lambda的阶乘生成器.
((lambda (x) (x x))
(lambda (fact-gen)
(lambda (n)
(if (zero? n)
1
(* n ((fact-gen fact-gen) (sub1 n)))))))
Run Code Online (Sandbox Code Playgroud)
但我甚至无法理解第一次调用,(lambda(x)(xx)):究竟是做什么的?你在哪里输入你想要得到的阶乘值?
这不是为了上课,这只是出于好奇.
我正在写一个带有画布的网站.该网站有一个脚本,除了最后一行之外,每次刷新都会成功运行.当脚本结束时:
document.body.onresize = function() {viewport.resizeCanvas()}
Run Code Online (Sandbox Code Playgroud)
"document.body.onresize"没有变化.(我在Chrome的javascript控制台中仔细检查:输入"document.body.onresize"会返回"undefined".)
但是,当脚本结束时:
document.body.onresize = function() {viewport.resizeCanvas()}
console.log(document.body.onresize)
Run Code Online (Sandbox Code Playgroud)
"document.body.onresize" 确实发生了变化.该功能完全正常工作.
我无法解释为什么这两个功能相同的代码片段有不同的结果.有人可以帮忙吗?
编辑:据我所知,"document.body"指的是正确的"document.body".当我console.log(document.body)在分配之前调用时document.body.onresize,会打印正确的HTML.
编辑2:解决方案(有点)
当我用"window"替换"document"时,每次调整窗口大小时,都会调用视口的"resizeCanvas"函数.
为什么"窗口"工作而"文档"仅在您首先调用"console.log"时才有效?不是线索.

我是一名新的C++程序员,我正在尝试运行一个简单的<10行程序作为系统测试.我的操作系统是OSX 10.9.5,我的gcc版本是4.2.1.
我已经创建了一个文件"test.cpp",我正在使用gcc在命令行上编译.命令是"gcc test.cpp -o test".然后我跑"./test".(是的,这是听起来基本的过程.)文件如下:
#include <iostream>
int main ()
{
printf("Hello World!");
std::cout << "Hi again!"; //Problem line
}
Run Code Online (Sandbox Code Playgroud)
当我包含包含std的行时,gcc会返回以下长错误:
Undefined symbols for architecture x86_64:
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*) in test-e54cb2.o
"std::__1::ios_base::getloc() const", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*) in test-e54cb2.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, …Run Code Online (Sandbox Code Playgroud) 在pandas数据帧中,如何删除服从条件的行的随机子集?
换句话说,如果我有一个带有Label列的Pandas数据帧,我想在其中删除50%(或其他一些百分比)的行Label == 1,但保留所有其余的:
Label A -> Label A
0 1 0 1
0 2 0 2
0 3 0 3
1 10 1 11
1 11 1 12
1 12
1 13
Run Code Online (Sandbox Code Playgroud)
我想知道最简单,最pythonic/panda-ish的做法!
编辑:这个问题提供了答案的一部分,但它只讨论了按索引删除行,忽略行值.我仍然想知道如何只从标记为某种方式的行中删除.
我刚下载了phonegap的WebIntent插件,但在设置时立即遇到错误.WebIntent.java的前几行是
import java.util.HashMap;
import java.util.Map;
import org.apache.cordova.DroidGap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.text.Html;
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
...
public class WebIntent extends Plugin {
Run Code Online (Sandbox Code Playgroud)
Eclipse识别所有这些导入,除了
org.apache.cordova.api.Plugin
经过一番研究,我发现Phonegap 2.0希望插件能够扩展插件类.Phonegap 2.7希望插件能够扩展"CordovaPlugin".
快速浏览一下Phonegap github就会发现,该套件中甚至不再存在名为"插件"的类.这让我很困惑,因为几个月前WebIntent github已经更新了,它仍然使用插件.
我尝试将插件更改为CordovaPlugin,无论我在文件中找到它.令人惊讶的是,大多数错误都是贬低的.但是,onNewIntent方法仍然有错误:
@Override
public void onNewIntent(Intent intent) {
if (this.onNewIntentCallback != null) {
PluginResult result = new PluginResult(PluginResult.Status.OK, intent.getDataString());
result.setKeepCallback(true);
this.success(result, this.onNewIntentCallback);
}
}
Run Code Online (Sandbox Code Playgroud)
"success(...)"不是CordovaPlugin中的函数,并且没有类似的功能.
谁能想到解决这个问题的方法?或者是否有我遗失的信息?(一个更新的WebIntent版本会很棒,但我似乎找不到一个)