我试图使用C#2010 Express在C#应用程序中引用本机x64 dll.我有一个演示项目,该项目是从2008项目转换而来的,该项目在其属性中有配置和平台选项,但我创建的新项目却没有!下拉列表不存在 - 实际上我甚至无法从Debug切换到Release.他们都使用.Net Framework 4,其他一切看起来都是一样的.
在C++和转换后的C#项目中,它很简单,你只需打开解决方案的配置管理器即可,但我的新C#项目在上下文菜单中没有.
由于存在大量内存需求,我需要能够在x64下引用x64 dll,在x86下引用x86 dll.任何人都可以解释为什么选项缺失或指出我如何解决它?
我正在使用VC 2010并试图通过将随机定义放在每个类实例的构造函数中来保持某些函数的开销和重复代码,然后根据需要从那里调用.我现在简化的是:
#include <random>
#include <Windows.h>
mt19937 eng(GetTickCount());
class Cycles {
int line;
normal_distribution<> rand_norm;
variate_generator<mt19937&,normal_distribution<>> r_norm;
public:
Cycles()
: rand_norm(0.85,0.05),
r_norm(eng,rand_norm) {
line=0;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,我最终得到了这个错误:
\ vc\include\random(513):错误C2248:'std :: tr1 :: _ Ewrap <_Engine,_Tgt_type> :: operator =':无法访问类'std :: tr1 :: _ Ewrap <_Engine中声明的私有成员, _Tgt_type>"
\ vc\include\random(446):查看'std :: tr1 :: _ Ewrap <_Engine,_Tgt_type> :: operator ='的声明
此诊断发生在编译器生成的函数'std :: tr1 :: variate_generator <_Engine,_Distrib>&std :: tr1 :: variate_generator <_Engine,_Distrib> :: operator =(const std :: tr1 :: variate_generator <_Engine,_Distrib >&)'
我理解这些应该在构造函数打开之前初始化,否则由于缺少默认构造函数而导致错误,但我不明白为什么会失败.我的C++ fu很生疏.
我看到的每个例子都显示分布器和生成器在调用它的函数中全局或本地初始化,这对我来说似乎很愚蠢,因为我有几个成员函数将使用在紧密循环中调用的r_norm.它严重失败了气味测试.没有人知道我错过了什么吗?