使用Windows API中的MFC TRACE宏或OutputDebugString,可以写入Visual Studio的输出窗口.有没有办法在没有安装Visual Studio的系统上看到此输出,并且不想安装它?
我有一个JD Edwards业务功能,它是用Microsoft Visual C++编写的一个C模块.我正在使用LoadLibrary访问第三方DLL.在一个独立的测试程序中,代码运行得很好.当我在JDE中运行它时,LoadLibrary返回NULL并且GetLastError返回126,这意味着The specified module could not be found根据MSDN.我已经尝试放入DLL的完整路径,是的,我记得要加倍路径中的\字符.没有不同.
我已经检查过以确保没有依赖项会阻止DLL加载; DUMPBIN/DEPENDENTS返回以下内容:
WSOCK32.dll
USER32.dll
GDI32.dll
WINSPOOL.DRV
ADVAPI32.dll
KERNEL32.dll
Run Code Online (Sandbox Code Playgroud)
这些看起来像标准的Windows DLL,所以我很茫然.
我想获得本地语言环境的numpunct <char> facet.我可以通过构造一个带有空字符串的对象来生成本地语言环境对象std::locale native_loc(""),但是一旦我拥有它,我该如何从中获取numpunct它?我发现的文档并没有真正显示两者之间的联系.
我的Windows程序中有一个所有者绘制的列表控件.我使用CListCtrl :: GetBkColor来获取背景颜色,对于选定的项目,我使用GetSysColor(COLOR_HIGHLIGHT).这与Windows用于非所有者绘制列表控件的内容相匹配,除了控件没有焦点的情况 - 然后将背景替换为灰色.
Windows是否为选定但未聚焦的背景使用其中一个GetSysColor常量?如果是这样,哪一个?
如果从MFC对话框中抛出异常,即使代码中有catch块,应用程序也会挂起.它拒绝响应鼠标或键盘,关闭它的唯一方法是使用任务管理器.
令我遗憾的是,有一个流行的收缩包装应用程序,每次遇到模态对话框中的异常错误时都会挂起.当我们从整数错误代码大量转换到异常时,我负责选择std :: exception作为抛出异常的基类.直到大量的工作进入转换,我们的测试才发现了这个问题,到那时为时已经太晚了.希望这个问题/答案会让某人犯同样的错误.
我有一个刚刚下载的Visual Studio C++ 2010 Express和wxWidgets 2.9.1.wx\build\msw下的build文件夹包含VC++版本6到9(2008)的解决方案文件.
我试图打开最新的解决方案,wx_vc9.sln.它用一堆警告转换了所有项目.当我尝试构建每个项目时都会收到错误:
C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5):错误MSB6001:"cmd.exe"的命令行开关无效.这条道路不是合法的形式.
尝试打开以前版本的解决方案wx_vc8.sln会生成相同的转换警告和相同的构建错误.
我用Google搜索了一些提示,并找到了一个以.dsw文件开头的建议.我打开了wx.dsw,它为每个项目文件生成了一个错误:
D:\ 3rdParty\wx\build\msw\wx_wxregex.dsp:错误:项目升级失败.
终于绝望了,我尝试了nmake /f makefile.vc,又迎来了另一个错误:
NMAKE:致命错误U1077:'cl':返回代码'0xc0000135'
有人有任何提示吗?谢谢.
我正试图从一张小桌子中随机抽取10%的样本.我以为我只是使用RAND()函数并选择随机数小于0.10的那些行:
SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
RAND() < 0.10
Run Code Online (Sandbox Code Playgroud)
但我很快发现RAND()总是返回相同的数字!让我想起这个xkcd卡通片.

没问题,RAND函数采用种子值.我将定期运行此查询,如果我在不同的日子运行它,我希望它给出不同的结果,所以我使用日期和唯一行ID的组合来播种它:
SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
RAND(CAST(GETDATE) AS INTEGER) + RowID) < 0.10
Run Code Online (Sandbox Code Playgroud)
我还是没有得到任何结果!当我显示RAND返回的随机数时,我发现它们都在一个狭窄的范围内.从RAND获取随机数似乎需要您使用随机种子.如果我首先有一个随机种子,我就不需要随机数!
我已经看到之前有关此问题的讨论:
他们没帮我.TABLESAMPLE在页面级别工作,这适用于大表,但不适用于小表,并且看起来它适用于WHERE子句之前.TOP with NEWID不起作用,因为我不知道我想要多少行.
任何人都有解决方案,或者至少有一个提示?
编辑:感谢AlexCuse提供适用于我的特定案例的解决方案.现在更大的问题,如何使兰德表现?
以下代码适用于gcc版本2.9到4.4,但不适用于版本4.5:
struct Pass {
};
int main(void){
Pass **passes = new ( Pass (*[ 10 ]) );
}
Run Code Online (Sandbox Code Playgroud)
gcc 4.5的具体错误消息是:
prob.cc: In function ‘int main()’:
prob.cc:6:31: warning: lambda expressions only available with -std=c++0x or -std=gnu++0x
prob.cc:6:38: error: no matching function for call to ‘Pass::Pass(void (&)())’
prob.cc:2:1: note: candidates are: Pass::Pass()
prob.cc:2:1: note: Pass::Pass(const Pass&)
Run Code Online (Sandbox Code Playgroud)
添加请求的标志会使初始警告无效,但不能解决问题.有人可以解释如何解决这个问题吗?这是我正在维护的一些不起眼的C++代码,我只知道有限数量的C++.
我需要将下面的c#代码更改为c ++代码.
public static byte[] StrToByteArray(string str)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(str);
}
Run Code Online (Sandbox Code Playgroud)
在这个网站上,我找到了UTF8Encoding的c ++代码,我从中创建了这段代码
void StrToByteArray(string unicodeString)
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
array<Byte>^encodedBytes = utf8->GetBytes( unicodeString );
}
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误
错误2错误C2664:'cli :: array ^ System :: Text :: Encoding :: GetBytes(cli :: array ^)':无法将参数1从'std :: string'转换为'cli :: array
为什么它会在与文档相同的情况下执行此操作?(除了我使用普通字符串,但使用顶级字符串^给我一个错误.)
我不确定它是否相关但我的代码是管理的.
注意:我还没有担心返回任何数据,直到我得到这个工作.
我今天才知道可以使用using语句继承构造函数:https://stackoverflow.com/a/20062289/5987
问题是,这是由标准规定还是某些编译器的扩展.如果它是标准的一部分,是否在C++ 11中引入?
c++ ×6
c++11 ×2
mfc ×2
visual-c++ ×2
windows ×2
constructor ×1
debugging ×1
dll ×1
gcc ×1
inheritance ×1
jdedwards ×1
loadlibrary ×1
locale ×1
managed-c++ ×1
new-operator ×1
random ×1
sql ×1
sql-server ×1
utf-8 ×1
wxwidgets ×1