小编NcA*_*ams的帖子

C++:Visual Studio 2015中未解析的外部符号_sprintf和_sscanf

对于一个研究项目,我正在为科学计算语言编写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.我假设库已经定义了这个宏,预见到了这个问题.无论如何,它没有解决问题.

我该怎么办?

c++ visual-studio-2015

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

使用pytest正确导入

我刚刚设置为使用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)

python import pytest

35
推荐指数
5
解决办法
2万
查看次数

在Scheme中,如何使用lambda创建递归函数?

我在一个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)):究竟是做什么的?你在哪里输入你想要得到的阶乘值?

这不是为了上课,这只是出于好奇.

recursion lambda scheme anonymous-recursion

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

Javascript:没有"console.log",更改"document.body.onresize"不会保留

我正在写一个带有画布的网站.该网站有一个脚本,除了最后一行之外,每次刷新都会成功运行.当脚本结束时:

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"时才有效?不是线索.

在此输入图像描述

html javascript events web

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

C++:"使用"std"时,"架构x86_64的未定义符号"错误

我是一名新的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)

c++ macos gcc std

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

从pandas数据帧中"删除随机行"

在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的做法!


编辑:这个问题提供了答案的一部分,但它只讨论了按索引删除行,忽略行值.我仍然想知道如何只从标记为某种方式的行中删除.

python dataframe pandas

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

Phonegap的WebIntent插件:找不到导入org.apache.cordova.api.Plugin

我刚下载了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版本会很棒,但我似乎找不到一个)

plugins android android-intent cordova

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